Skip to main content

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.8
  • numpy>=1.24
  • pandas>=2.0
  • uproot>=5.0
  • tqdm>=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 暴露以下对象:

  • ROOT
  • Tree
  • HepAxes

你可以直接:

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


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.3.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fuckroot-0.0.6.3-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file fuckroot-0.0.6.3.tar.gz.

File metadata

  • Download URL: fuckroot-0.0.6.3.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fuckroot-0.0.6.3.tar.gz
Algorithm Hash digest
SHA256 07193dc59867ca2fd04e5257c7f77f63e605e2f0e9df0499ccbfbdab7ecf999e
MD5 a1a9acebc512cd47eb4d1b0d1bc77627
BLAKE2b-256 d3dab50ccf4902a076e14c91b400bb4f9b55efca9dbe499b2e22ed81e93ac308

See more details on using hashes here.

File details

Details for the file fuckroot-0.0.6.3-py3-none-any.whl.

File metadata

  • Download URL: fuckroot-0.0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fuckroot-0.0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1e1b1f701aacd90943235d63ef710eedb80c92645a3342ef2690a6f37a69d2d8
MD5 81c938dfef01e5361365d93c1e970258
BLAKE2b-256 1540defcc11f4a077e0b7d4a55d1409ec5e1efbffb4f74bc30a7f2e49cd20895

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page