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.1.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.1-py3-none-any.whl
(15.6 kB
view details)
File details
Details for the file fuckroot-0.0.1.tar.gz.
File metadata
- Download URL: fuckroot-0.0.1.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 |
30061e7b0fe0507e03e379988428ac439afb4821200e79f9ec0f98dee0fb41d9
|
|
| MD5 |
e059fec0f1d07e2ca64f57056f2e2bbd
|
|
| BLAKE2b-256 |
1d8747b66bfb10e5e9c89c48d6112ad82b3dcba6638e75fe39fcb2b48b3ed85b
|
File details
Details for the file fuckroot-0.0.1-py3-none-any.whl.
File metadata
- Download URL: fuckroot-0.0.1-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 |
3f0d571a415a1eb6c24ac90f33d46bb457e71f61b6cfcf1fd1d41ea49c4bd981
|
|
| MD5 |
b94ebca50b0262328ba1f766c0cdc2c6
|
|
| BLAKE2b-256 |
06187e1346128bae2ac301cab60d22f1b6caf0e9f9c55eae08c6c6d7cd009510
|