面向 FastJet 的数组导向 Python 接口
高能物理 - 实验
2023-02-21 v1 编程语言
计算物理
数据分析、统计与概率
摘要
HEP 数据分析是一个迭代过程,其中一步的结果往往为下一步提供信息。在探索性分析中,常对事件集合执行一次计算,然后查看结果(通常用直方图)以决定下一步尝试什么。Awkward Array 是一个 Scikit-HEP 的 Python 包,支持以数组为单位的操作进行数据分析,将切割实现为切片、组合实现为可组合函数等。然而,大多数 C++ HEP 库(如 FastJet)具有命令式、逐粒子的接口,在 Python 中效率低下,且违背科学 Python 的数组为单位逻辑。因此,我们开发了 fastjet,一个可通过 pip 安装的 Python 包,提供 FastJet C++ 二进制文件、经典(逐粒子)Python 接口,以及用于 Awkward Array 的新数组导向接口。新接口简化了与 HEP 之外的科学 Python 软件(如机器学习)的互操作。在一个案例中,采用该库及其他数组导向工具将 HEP 分析代码加速了 20 倍。其设计易于与 Scikit-HEP 生态系统中的库集成,包括 Uproot(文件 I/O)、hist(直方图)、Vector(洛伦兹矢量)和 Coffea(高层粘合)。我们讨论了 fastjet Python 库的设计,将经典接口与数组导向接口以及用于洛伦兹矢量运算的 Vector 库相集成。新接口以开源形式开发。
引用
@article{arxiv.2202.03911,
title = {An array-oriented Python interface for FastJet},
author = {Aryan Roy and Jim Pivarski and Chad Wells Freer},
journal= {arXiv preprint arXiv:2202.03911},
year = {2023}
}
备注
5 pages, 2 figures, submitted to ACAT 2021 proceedings