跳转到主要内容

Hist类和实用工具

项目描述

histogram

Hist

Actions Status Documentation Status pre-commit.ci status

PyPI version Conda-Forge PyPI platforms DOI License

GitHub Discussion Gitter Binder Scikit-HEP

Hist 是为 Python 3.8+(3.6-3.7 用户获取旧版本)设计的,是针对 boost-histogram 的分析友好型前端。请参阅 更新日志

Slideshow of features. See docs/banner_slides.md for text if the image is not readable.

安装

您可以使用 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_iterfrom_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规范。

会谈


致谢

此库主要是由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 查看哈希值)

上传时间 Python 3

由以下支持