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.6.5.tar.gz
(15.1 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
File details
Details for the file fuckroot-0.0.6.5.tar.gz.
File metadata
- Download URL: fuckroot-0.0.6.5.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34de0089a48f2ec3981b49330062fd85aa3eaacd7b5be4169787aaaad671c575
|
|
| MD5 |
ca18034ded87b40ba6e300e68b144c9f
|
|
| BLAKE2b-256 |
e974fb1052d5dc9eab66e800e24f770eb0db1c491a868dba29497c89f760aa12
|
File details
Details for the file fuckroot-0.0.6.5-py3-none-any.whl.
File metadata
- Download URL: fuckroot-0.0.6.5-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
045a77dcc4605b7a1ff355ef84afe79955187b9a0f5cce62b51bbb84f55c62e8
|
|
| MD5 |
aac804cc524a9d046054d3abcddea6bb
|
|
| BLAKE2b-256 |
727f19d1c125763e43c1e58c6963e63d024f843a9041d9d027f817fcd154b9be
|