将ServiceX集成到TRExFitter中,以提供读取输入ntuples的替代方法
项目描述
ServiceX for TRExFitter
GitHub和PyPI发布v1.1.0版本
概述
ServiceX
,IRIS-HEP DOMA组的iDDS组件,是一个实验无关的服务,它能够从不同格式的数据湖中按需交付数据,包括Apache Arrow和ROOT ntuple。
TRExFitter
是ATLAS实验中执行轮廓似然拟合的一个流行框架。它接受ROOT直方图或ntuples作为输入。对于大型和/或远程数据,ntuple读取的长时间周转会减慢整个分析的速度。
servicex-for-trexfitter
是一个Python包,用于将ServiceX
集成到TRExFitter
框架中。如果您使用ROOT
ntuples作为输入,它提供了一种替代的工作流程。该包分析您的TRExFitter
配置文件,并仅提供所有必需的分支和条目来生成您的TRExFitter
配置文件中定义的所有直方图。
默认工作流程需要从网格将所有ROOT
ntuples下载到您的本地机器或CERN EOS区域。另一方面,使用servicex-for-trexfitter
的工作流程仅提供ROOT
ntuples的子集。它实际上替代了使用Rucio
从网格下载ROOT
ntuples的步骤。
主要优势包括
- 磁盘空间:无需在本地存储所有
ROOT
ntuples。由servicex-for-trexfitter
减少的ROOT
ntuples数量根据您的TRExFitter
配置文件中的设置而变化。 - 更快的响应时间:对于
servicex-for-trexfitter
,ROOT
ntuples 的下载可以更快,因为它可以将您的作业并行化到每个文件的每个TTree
,并通过广域网(WAN)提供更小的ROOT
ntuples。使用servicex-for-trexfitter
的TRExFitter
选项n
的处理时间自然会更快,因为它运行在较小的ROOT
ntuples 上。 - 简单性:使用单个
TRExFitter
配置文件,通过servicex-for-trexfitter
从网格获取ROOT
ntuples,并执行所有其他TRExFitter
步骤。不需要单独的脚本来下载网格上的所有ROOT
ntuples。
先决条件
- Python 3.6、3.7 或 3.8
- 访问 Uproot ServiceX 端点。有关 ServiceX 的更多信息,请参阅 ServiceX 文档
用法
安装
该库已发布在 PyPI:servicex-for-trexfitter
准备 TRExFitter 配置
以下是使用 servicex-for-trexfitter
的工作流程所需的设置
Job
块设置
NtuplePaths: <PATH>
- 存储输入 root 文件的位置。
- 需要写入权限,因为 ServiceX 将 root ntuples 交付到此路径的子目录
servicex
中。
Sample
块设置
GridDID: <Rucio DID>
- 为使用 ServiceX 交付的
Sample
添加选项GridDID
。 GridDID
的范围和名称,例如,user.kchoi:user.kchoi.WZana_WZ
。- Sample 可以有多个 DID:例如,
user.kchoi:user.kchoi.WZana_WZ_mc16a, user.kchoi:user.kchoi.WZana_WZ_mc16d, user.kchoi:user.kchoi.WZana_WZ_mc16e
- 没有选项
GridDID
的Sample
被视为典型的 Sample,它从本地路径读取 ntuples 文件。
- 为使用 ServiceX 交付的
NtupleFile: servicex/<SAMPLE NAME>
servicex-for-trexfitter
为每个Sample
提供一个与Sample
名称相同的ROOT
文件。- 此选项仅适用于具有选项
GridDID
的 Sample。其他 Sample 可以使用对 NTUP 选项有效的任何选项。
以下是示例配置文件的并排比较
servicex-for-trexfitter |
默认值 |
---|---|
注意事项
- 仅支持 TBranch 的标量类型。
- 大多数标准 TCut 表达式都支持
Selection
,但像Sum$(公式)
这样的特殊函数尚不支持。有关支持的 TCut 表达式的更多信息,请参阅 此处。
交付 ROOT
ntuples
from servicex_for_trexfitter import ServiceXTRExFitter
sx_trex = ServiceXTRExFitter("<TRExFitter configuration file>")
sx_trex.get_ntuples()
一旦加载了包,您可以使用 TRExFitter
配置文件作为参数定义一个实例。然后,您可以请求交付 ROOT
ntuples。它将根据您的 TRExFitter
配置启动 ServiceX
转换(s),并将 ROOT
ntuples 交付到您在 NtuplePaths/servicex
中指定的路径。
本地数据缓存
ServiceX
提供了一个功能,可以将您的查询和数据缓存在本地临时目录中。因此,每当您对 TRExFitter
配置文件进行进一步更改时,servicex-for-trexfitter
只为更新的部分创建数据交付请求。
兼容 TRExFitter 框架
要使用 servicex-for-trexfitter
交付的 ROOT
ntuples 运行 TRExFitter
的后续步骤,您需要检出 TRExFitter
框架的 feat/servicex-integration
分支。否则,TRExFitter
将抱怨未知选项。此功能分支将在不久的将来合并到 master 中。
致谢
本工作的支持由美国能源部,高能物理办公室提供,项目编号为 DE-SC0007890
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
哈希值 for servicex_for_trexfitter-1.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a53c3ae312973fbba16bfbd3702886e574b36e40fc11d83b115fe41ed6cc4cea |
|
MD5 | 22e8b3d26056aafbeb21261dc1d94d83 |
|
BLAKE2b-256 | 06127842249c21cace817568009ecf1a2e4ea6984d03963d3d1f0514f01eb792 |