Hist es una interfaz amigable para los analistas para boost-histogram, diseñada para Python 3.8+ (los usuarios 3.6-3.7 obtienen versiones anteriores). Vea las novedades.
Puedes instalar esta biblioteca desde PyPI con pip:
python3 -m pip install "hist[trama,ajuste]"
Si no necesita las funciones de trazado, puede omitir los extras [plot]
y/o [fit]
. [fit]
actualmente no es compatible con WebAssembly.
Actualmente, Hist proporciona todo lo que ofrece boost-histogram y las siguientes mejoras:
Hist aumenta los ejes con nombres:
name=
es una etiqueta única que describe cada eje.
label=
es una cadena opcional que se utiliza en el trazado (el valor predeterminado es name
si no se proporciona).
Indexación, proyección y más soporte para ejes con nombre.
NamedHist
experimental es un Hist
que deshabilita la mayoría de las formas de acceso posicional, lo que obliga a los usuarios a usar solo nombres.
La clase Hist
aumenta bh.Histogram
con una construcción más simple:
flow=False
es una forma rápida de desactivar el flujo de los ejes en construcción.
Los almacenamientos se pueden dar por cadena.
storage=
se puede omitir, las cadenas y los almacenamientos pueden ser posicionales.
data=
puede inicializar un histograma con datos existentes.
Hist.from_columns
se puede utilizar para inicializar con un DataFrame o dict.
Puedes transmitir hacia adelante y hacia atrás con boost-histogram (o cualquier otra extensión).
Hist admite QuickConstruct, un sistema de construcción libre de importaciones que no requiere importaciones adicionales:
Utilice Hist.new.<axis>().<axis>().<storage>()
.
Los nombres de los ejes pueden ser completos ( Regular
) o cortos ( Reg
).
Los argumentos del histograma (como data=
) pueden ir al almacenamiento.
Funciones de histograma extendido:
Soporte directo para .name
y .label
, como ejes.
.density()
calcula la densidad como una matriz.
.profile(remove_ax)
puede convertir un histograma ND COUNT en un histograma (N-1)D MEAN.
.sort(axis)
admite ordenar un histograma por un eje categórico. Opcionalmente, toma una función para ordenar.
.fill_flattened(...)
se aplanará y rellenará, incluida la compatibilidad con AwkwardArray.
.integrate(...)
, que toma los argumentos opuestos como .project
.
Hist implementa UHI+; una extensión del sistema UHI (Unified Histogram Indexing) diseñada para una interactividad sin importaciones:
Utiliza el sufijo j
para cambiar a coordenadas de datos en acceso o sectores.
Utiliza el sufijo j
en los cortes para volver a combinar.
Las cadenas se pueden utilizar directamente para indexar en ejes de categorías de cadenas.
Las rutinas de trazado rápido fomentan la exploración:
.plot()
proporciona gráficos 1D y 2D (o use plot1d()
, plot2d()
)
.plot2d_full()
muestra proyectos 1D alrededor de un gráfico 2D.
.plot_ratio(...)
crea un gráfico de relación entre el histograma y otro histograma o invocable.
.plot_pull(...)
realiza un gráfico de extracción.
.plot_pie()
crea un gráfico circular.
.show()
proporciona una buena impresión str usando Histoprint.
Pilas: trabajar con grupos de histogramas con ejes idénticos
Las pilas se pueden crear con h.stack(axis)
, usando el índice o el nombre de un eje (los ejes StrCategory
son ideales).
También puedes crear con hist.stacks.Stack(h1, h2, ...)
, o usar from_iter
o from_dict
.
Puede indexar una pila y establecer una entrada con un histograma coincidente.
Las pilas admiten .plot()
y .show()
, con nombres (las etiquetas de trazado tienen por defecto la información de los ejes originales).
Las pilas pasan por .project
, *
, +
y -
.
Nuevos módulos
intervals
admiten intervalos de cobertura frecuentistas.
Listo para el cuaderno: Hist tiene una magnífica representación en el cuaderno.
No se requieren dependencias
from hist import Hist# Construcción rápida, no se necesitan otras importaciones:h = (Hist.new.Reg(10, 0, 1, name="x", label="x-axis") .Var(rango(10), nombre="y", etiqueta="eje y") .Int64() )# Se permite completar con nombres:h.fill(y=[1, 4, 6], x=[3, 5, 2])# Los nombres se pueden usar para manipular el histograma:h.project("x") h[{"y": 0.5j + 3, "x": 5j}]# Puede acceder a las coordenadas de datos o volver a binar con un sufijo `j`:h[0.3j:, ::2j] # x desde .3 hasta el final, y se vuelve a agrupar mediante 2# Funciones de trazado elegantes:h.plot()h.plot2d_full()h.plot_pull(Callable)
Desde un checkout de git, use nox o ejecute:
python -m pip instalar -e .[desarrollo]
Consulte Pautas de contribución para obtener información sobre cómo configurar un entorno de desarrollo.
Nos gustaría agradecer a los contribuyentes que hicieron posible este proyecto (clave emoji):
Henry Schreiner ? | Nino Lau ? | Chris Burr | Nick Amin | Eduardo Rodrigues | Andrzej Novak | Mateo Feickert |
Kyle Cranmer | Daniel Antrim | nicolas smith | Michael Eliachevitch | Jonás Eschle |
Este proyecto sigue la especificación de todos los contribuyentes.
2021-07-07 PyHEP 2021: ¿histogramas de alto rendimiento para análisis HEP?
2020-09-08 IRIS-HEP/GSOC - Hist: ¿histogramas para análisis impulsados por boost-histogram?
2020-07-07 ¿Actas de SciPy?
2020-07-17 PyHEP 2020 ?
Esta biblioteca fue desarrollada principalmente por Henry Schreiner y Nino Lau.
El apoyo para este trabajo fue proporcionado por el acuerdo cooperativo de la Fundación Nacional de Ciencias OAC-1836650 (IRIS-HEP) y OAC-1450377 (DIANA/HEP). Cualquier opinión, hallazgo, conclusión o recomendación expresada en este material pertenece a los autores y no refleja necesariamente los puntos de vista de la National Science Foundation.