跳转到主要内容

将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的步骤。

Workflow comparison

主要优势包括

  • 磁盘空间:无需在本地存储所有ROOT ntuples。由servicex-for-trexfitter减少的ROOT ntuples数量根据您的TRExFitter配置文件中的设置而变化。
  • 更快的响应时间:对于 servicex-for-trexfitterROOT ntuples 的下载可以更快,因为它可以将您的作业并行化到每个文件的每个 TTree,并通过广域网(WAN)提供更小的 ROOT ntuples。使用 servicex-for-trexfitterTRExFitter 选项 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
    • 没有选项 GridDIDSample 被视为典型的 Sample,它从本地路径读取 ntuples 文件。
  • 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

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

servicex_for_trexfitter-1.1.0.tar.gz (12.6 kB 查看哈希值)

上传时间 源代码

构建分发

servicex_for_trexfitter-1.1.0-py3-none-any.whl (12.2 kB 查看哈希值)

上传时间 Python 3

由...