Hist类和实用工具
项目描述
Hist
Hist 是为 Python 3.8+(3.6-3.7 用户获取旧版本)设计的,是针对 boost-histogram 的分析友好型前端。请参阅 更新日志。
安装
您可以使用 pip 从 PyPI 安装此库
python3 -m pip install "hist[plot,fit]"
如果您不需要绘图功能,可以跳过 [plot]
和/或 [fit]
额外功能。目前 WebAssembly 不支持 [fit]
。
功能
Hist 目前提供 boost-histogram 提供的所有功能,以及以下增强功能
-
Hist 为轴增加了名称
name=
是描述每个轴的唯一标签。label=
是可选字符串,用于绘图(如果未提供,则默认为name
)。- 支持索引、投影等命名轴。
- 实验性的
NamedHist
是一个禁用了大多数形式的位置访问的Hist
,强制用户只能使用名称。
-
Hist
类通过简化构建增强了bh.Histogram
flow=False
是在构建时快速关闭轴的流的一种方法。- 可以通过字符串提供存储。
storage=
可以省略,字符串和存储可以是位置参数。data=
可以使用现有数据初始化直方图。Hist.from_columns
可以使用 DataFrame 或 dict 初始化。- 您可以使用 boost-histogram(或任何其他扩展)进行双向转换。
-
Hist 支持 QuickConstruct,这是一个无需额外导入的构建系统。
- 使用
Hist.new.<axis>().<axis>().<storage>()
。 - 轴名称可以是全名(
Regular
)或简称(Reg
)。 - 直方图参数(如
data=
)可以放在存储中。
- 使用
-
扩展的直方图功能
- 直接支持
.name
和.label
,就像轴一样。 .density()
计算密度作为一个数组。.profile(remove_ax)
可以将 ND COUNT 直方图转换为 (N-1)D MEAN 直方图。.sort(axis)
支持按分类轴对直方图进行排序。可选地接受一个排序函数。.fill_flattened(...)
将扁平化和填充,包括对 AwkwardArray 的支持。.integrate(...)
,它接受与.project
相反的参数。
- 直接支持
-
Hist 实现了 UHI+;这是为无需导入的交互而设计的 UHI(统一直方图索引)系统的扩展
- 使用
j
后缀在访问或切片中切换到数据坐标。 - 在切片上使用
j
后缀进行重新分箱。 - 可以直接使用字符串来索引字符串分类轴。
- 使用
-
快速绘图例程鼓励探索
.plot()
提供 1D 和 2D 图表(或使用plot1d()
,plot2d()
).plot2d_full()
在 2D 图表周围显示 1D 投影。.plot_ratio(...)
在直方图和另一个直方图或可调用对象之间创建比率图。.plot_pull(...)
执行拉图。.plot_pie()
创建饼图。.show()
提供使用 Histoprint 的良好 str 打印输出。
-
堆栈:与具有相同轴的直方图组一起工作
- 可以使用
h.stack(axis)
创建堆叠,使用轴的索引或名称(StrCategory
轴最佳)。 - 您还可以使用
hist.stacks.Stack(h1, h2, ...)
创建堆叠,或使用from_iter
或from_dict
。 - 您可以对堆叠进行索引,并用匹配的直方图设置条目。
- 堆叠支持
.plot()
和.show()
,带有名称(绘图标签默认为原始轴信息)。 - 堆叠可以通过
.project
,*
,+
和-
。
- 可以使用
-
新模块
intervals
支持频率主义覆盖区间。
-
笔记本就绪:Hist具有优雅的笔记本表示。
- 无需依赖
用法
from hist import Hist
# Quick construction, no other imports needed:
h = (
Hist.new.Reg(10, 0, 1, name="x", label="x-axis")
.Var(range(10), name="y", label="y-axis")
.Int64()
)
# Filling by names is allowed:
h.fill(y=[1, 4, 6], x=[3, 5, 2])
# Names can be used to manipulate the histogram:
h.project("x")
h[{"y": 0.5j + 3, "x": 5j}]
# You can access data coordinates or rebin with a `j` suffix:
h[0.3j:, ::2j] # x from .3 to the end, y is rebinned by 2
# Elegant plotting functions:
h.plot()
h.plot2d_full()
h.plot_pull(Callable)
开发
从git检出,可以使用nox,或者运行
python -m pip install -e .[dev]
有关设置开发环境的详细信息,请参阅贡献指南。
贡献者
我们想感谢使这个项目成为可能的贡献者(emoji key)
Henry Schreiner 🚧 💻 📖 |
Nino Lau 🚧 💻 📖 |
Chris Burr 💻 |
Nick Amin 💻 |
Eduardo Rodrigues 💻 |
Andrzej Novak 💻 |
Matthew Feickert 💻 |
Kyle Cranmer 📖 |
Daniel Antrim 💻 |
Nicholas Smith 💻 |
Michael Eliachevitch 💻 |
Jonas Eschle 📖 |
此项目遵循all-contributors规范。
会谈
- 2021-07-07 PyHEP 2021 -- 高性能直方图用于HEP分析 🎥
- 2020-09-08 IRIS-HEP/GSOC -- Hist:由boost-histogram驱动的分析直方图 🎥
- 2020-07-07 SciPy会议 🎥
- 2020-07-17 PyHEP 2020 🎥
致谢
此库主要是由Henry Schreiner和Nino Lau开发的。
本工作的支持由国家科学基金会合作协议OAC-1836650(IRIS-HEP)和OAC-1450377(DIANA/HEP)提供。本文档中表达的意见、发现、结论或建议均为作者的观点,并不一定反映国家科学基金会的观点。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源代码分发
hist-2.8.0.tar.gz (992.2 kB 查看哈希值)
构建分发
hist-2.8.0-py3-none-any.whl (40.5 kB 查看哈希值)