FUCKROOT toolkit for ROOT I/O and HEP-style plotting
Project description
FUCKROOT
FUCKROOT 是一个面向高能物理(HEP)分析场景的小工具包,提供两类核心能力:
- ROOT 文件读取与树结构访问(基于
uproot) - Matplotlib 的 HEP 风格绘图投影(
projection="hep")
当前版本:0.1.1
Features
ROOT类:打开 ROOT 文件并打印目录树结构Tree类:- 缓存分支数据,支持
tree["branch"]直接取 NumPy 数组 - 快速查看分支名
tree.keys() hist1d(...)一键绘制 1D 直方图
- 缓存分支数据,支持
HepAxes自定义投影:- LHCb 风格默认样式(刻度、线宽、配色、字体)
ax.hist(..., stat=True, errors=True)自动统计文本与误差棒- 多次
hist自动使用统一 bin/range,便于叠图比较 - 支持
twinx()(当前版本有已知对齐限制,见下方注意事项)
Installation
要求:Python >= 3.10
推荐在虚拟环境中安装:
python -m venv .venv
source .venv/bin/activate
pip install -e .
项目依赖(由 pyproject.toml 管理):
matplotlib>=3.8numpy>=1.24pandas>=2.0uproot>=5.0tqdm>=4.65
Quick Start
1) 打开 ROOT 文件并查看目录
from FUCKROOT import ROOT
rt = ROOT("your_file.root")
print(rt) # 打印 ROOT 目录树
2) 访问树并读取分支
tree = rt["tree"]
print(tree.keys())
x = tree["var_0"] # 返回 numpy.ndarray
print(x.shape)
3) 画 HEP 风格直方图
import matplotlib.pyplot as plt
fig, ax = plt.subplots(subplot_kw={"projection": "hep"})
ax.hist(x, bins=60, label="var_0", stat=True, errors=True)
ax.set_xlabel("var_0")
ax.set_ylabel("Entries")
ax.legend()
plt.show()
说明:导入 FUCKROOT.HEP_PLOT 后,plt.subplots() 默认会启用 projection="hep"。
Public API
FUCKROOT/__init__.py 暴露以下对象:
ROOTTreeHepAxes
你可以直接:
from FUCKROOT import ROOT, Tree, HepAxes
Notes And Caveats
Tree.__init__在数据量较大时只预取前 500 和后 500 条用于快速预览;实际分支数据在tree["branch"]时按需读取并缓存。Tree.hist1d(...)当前实现会内部创建新的figure/axes并直接显示(plt.show(block=False))。HepAxes.twinx()会给出 warning:双轴直方图在当前版本下可能存在 bin 对齐问题,不建议用于严格对齐比较。
Package Layout
FUCKROOT/
HEP_PLOT/
HepFigure.py # HepAxes 实现与投影注册
lhcbStyle.C # ROOT 风格参考文件
ROOT_BASE/
ROOT.py # ROOT 文件包装
Tree.py # 树数据与绘图辅助
Development
本地开发安装:
pip install -e .
构建分发包:
python -m build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fuckroot-0.0.3.tar.gz
(13.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
fuckroot-0.0.3-py3-none-any.whl
(15.6 kB
view details)
File details
Details for the file fuckroot-0.0.3.tar.gz.
File metadata
- Download URL: fuckroot-0.0.3.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
287334e378e8b211b662bc47c8eff477b3062d6baa9f0c021ee595cdb0bd035f
|
|
| MD5 |
301d6c1f9a596e619d55919cf55f4200
|
|
| BLAKE2b-256 |
6db55e8db7bdc20d3afd73a2e5bee526bad4a869ed42f580cf2a978de9eca38a
|
File details
Details for the file fuckroot-0.0.3-py3-none-any.whl.
File metadata
- Download URL: fuckroot-0.0.3-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
087c22e26921657e158c6d85f063c0858032648227f1595d7d65c59e068a1288
|
|
| MD5 |
c09598680d494c137fe95b38a1dd13f9
|
|
| BLAKE2b-256 |
1268ff3282a3ce8c5cd0709d744ddff87de50c687521d89db73863bb292ba332
|