Hist é um front-end amigável para analistas para histograma de reforço, projetado para Python 3.8+ (usuários 3.6-3.7 obtêm versões mais antigas). Veja o que há de novo.
Você pode instalar esta biblioteca do PyPI com pip:
python3 -m pip install "hist[plot,fit]"
Se você não precisa dos recursos de plotagem, você pode pular os extras [plot]
e/ou [fit]
. [fit]
não é atualmente suportado no WebAssembly.
Atualmente, o Hist fornece tudo o que o histograma de reforço oferece e os seguintes aprimoramentos:
Hist aumenta eixos com nomes:
name=
é um rótulo exclusivo que descreve cada eixo.
label=
é uma string opcional usada na plotagem (o padrão é name
se não for fornecido).
Indexação, projeção e muito mais suportam eixos nomeados.
Experimental NamedHist
é um Hist
que desativa a maioria das formas de acesso posicional, forçando os usuários a usar apenas nomes.
A classe Hist
aumenta bh.Histogram
com uma construção mais simples:
flow=False
é uma maneira rápida de desligar o fluxo dos eixos em construção.
Os armazenamentos podem ser fornecidos por string.
storage=
pode ser omitido, strings e storages podem ser posicionais.
data=
pode inicializar um histograma com dados existentes.
Hist.from_columns
pode ser usado para inicializar com um DataFrame ou dict.
Você pode alternar com o histograma de reforço (ou qualquer outra extensão).
Hist suporta QuickConstruct, um sistema de construção livre de importação que não requer importações extras:
Use Hist.new.<axis>().<axis>().<storage>()
.
Os nomes dos eixos podem ser completos ( Regular
) ou curtos ( Reg
).
Argumentos do histograma (como data=
) podem ser armazenados.
Recursos de histograma estendido:
Suporte direto para .name
e .label
, como eixos.
.density()
calcula a densidade como um array.
.profile(remove_ax)
pode converter um histograma ND COUNT em um histograma (N-1)D MEAN.
.sort(axis)
suporta a classificação de um histograma por um eixo categórico. Opcionalmente, leva uma função para classificar.
.fill_flattened(...)
irá nivelar e preencher, incluindo suporte para AwkwardArray.
.integrate(...)
, que aceita os argumentos opostos de .project
.
Hist implementa UHI+; uma extensão do sistema UHI (Unified Histogram Indexing) projetado para interatividade sem importação:
Usa o sufixo j
para mudar para coordenadas de dados em acesso ou fatias.
Usa o sufixo j
nas fatias para rebin.
Strings podem ser usadas diretamente para indexar em eixos de categoria de string.
Rotinas de plotagem rápida incentivam a exploração:
.plot()
fornece gráficos 1D e 2D (ou use plot1d()
, plot2d()
)
.plot2d_full()
mostra projetos 1D em torno de um gráfico 2D.
.plot_ratio(...)
faz um gráfico de proporção entre o histograma e outro histograma ou chamável.
.plot_pull(...)
executa um gráfico pull.
.plot_pie()
cria um gráfico de pizza.
.show()
fornece uma bela impressão de str usando Histoprint.
Pilhas: trabalhe com grupos de histogramas com eixos idênticos
As pilhas podem ser criadas com h.stack(axis)
, usando o índice ou nome de um eixo ( StrCategory
axes ideal).
Você também pode criar com hist.stacks.Stack(h1, h2, ...)
ou usar from_iter
ou from_dict
.
Você pode indexar uma pilha e definir uma entrada com um histograma correspondente.
As pilhas suportam .plot()
e .show()
, com nomes (os rótulos de plotagem são padrão para as informações dos eixos originais).
As pilhas passam por .project
, *
, +
e -
.
Novos módulos
intervals
oferece suporte a intervalos de cobertura frequentistas.
Pronto para notebook: Hist tem uma linda representação no notebook.
Não são necessárias dependências
from hist import Hist# Construção rápida, nenhuma outra importação é necessária:h = (Hist.new.Reg(10, 0, 1, name="x", label="x-axis") .Var(intervalo(10), nome="y", rótulo="eixo y") .Int64() )# O preenchimento por nomes é permitido:h.fill(y=[1, 4, 6], x=[3, 5, 2])# Nomes podem ser usados para manipular o histograma:h.project("x") h[{"y": 0.5j + 3, "x": 5j}]# Você pode acessar coordenadas de dados ou rebin com um sufixo `j`:h[0.3j:, ::2j] # x de 0,3 até o final, y é reorganizado por 2# Funções de plotagem elegantes:h.plot()h.plot2d_full()h.plot_pull(Callable)
Em um checkout do git, use nox ou execute:
python -m pip instalar -e.[dev]
Consulte Diretrizes de contribuição para obter informações sobre como configurar um ambiente de desenvolvimento.
Gostaríamos de agradecer aos colaboradores que tornaram este projeto possível (chave emoji):
Henrique Schreiner ? | Nino Lau ? | Chris Burr | Nick Amin | Eduardo Rodrigues | Andrzej Novak | Mateus Feickert |
Kyle Cranmer | Daniel Antrim | Nicholas Smith | Michael Eliachevitch | Jonas Eschle |
Este projeto segue a especificação de todos os contribuidores.
2021-07-07 PyHEP 2021 - Histograma de alto desempenho para análise HEP?
2020-09-08 IRIS-HEP/GSOC - Hist: histograma para análise alimentado por histograma de reforço?
2020-07-07 Procedimentos SciPy?
17/07/2020 PyHEP 2020 ?
Esta biblioteca foi desenvolvida principalmente por Henry Schreiner e Nino Lau.
O apoio para este trabalho foi fornecido pelo acordo de cooperação da National Science Foundation OAC-1836650 (IRIS-HEP) e OAC-1450377 (DIANA/HEP). Quaisquer opiniões, descobertas, conclusões ou recomendações expressas neste material são de responsabilidade dos autores e não refletem necessariamente as opiniões da National Science Foundation.