跳转到主要内容

向ServiceX端点提交功能查询。

项目描述

func_adl_servicex

将func_adl表达式发送到ServiceX端点

GitHub Actions Status Code Coverage

PyPI version Supported Python versions

简介

此包包含单个对象ServiceXSourceXAODServiceXSourceUpROOT,可用作func_adl表达式的根,以查询来自网络上活跃的ServiceX实例的大型LHC数据集。

以下为简单示例。

更多信息

  • servicex 文档
  • func_adl 文档

用法

要在servicex上使用func_adl,您只需要安装此包。所有其他要求都将作为此包的依赖项自动拉入。

使用xAOD后端

请参阅上述文档的更多信息以了解其工作原理。以下是一个快速示例,它将在servicex中的ATLAS xAOD后端中运行,以获取pt > 30 GeV的喷气机pt值。

from func_adl_servicex import ServiceXSourceXAOD

dataset_xaod = "mc15_13TeV:mc15_13TeV.361106.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zee.merge.DAOD_STDM3.e3601_s2576_s2132_r6630_r6264_p2363_tid05630052_00"
ds = ServiceXSourceXAOD(dataset_xaod)
data = (
    ds
    .SelectMany('lambda e: (e.Jets("AntiKt4EMTopoJets"))')
    .Where('lambda j: (j.pt()/1000)>30')
    .Select('lambda j: j.pt()')
    .AsAwkwardArray(["JetPt"])
    .value()
)

print(data['JetPt'])

使用CMS Run 1 AOD后端

请参阅上述文档的更多信息以了解其工作原理。以下是一个快速示例,它将在servicex中的CMS Run 1 AOD后端中运行。它将针对一个6TB的CMS Open Data数据集,选择具有大于30 GeV的pT的全局μ子。

from func_adl_servicex import ServiceXSourceCMSRun1AOD

dataset_xaod = "cernopendata://16"
ds = ServiceXSourceCMSRun1AOD(dataset_xaod)
data = (
    ds
    .SelectMany(lambda e: e.TrackMuons("globalMuons"))
    .Where(lambda m: m.pt() > 30)
    .Select(lambda m: m.pt())
    .AsAwkwardArray(['mu_pt'])
    .value()
)

print(data['mu_pt'])

使用uproot后端

请参阅上述文档的更多信息以了解其工作原理。以下是一个快速示例,它将在servicex中的uproot后端的ROOT文件(TTree)中运行,以获取喷气机pt值。请注意,这里的图像名称标记可能是错误的。请参阅XXX以获取当前标记。

from servicex import ServiceXDataset
from func_adl_servicex import ServiceXSourceUpROOT


dataset_uproot = "user.kchoi:user.kchoi.ttHML_80fb_ttbar"
uproot_transformer_image = "sslhep/servicex_func_adl_uproot_transformer:issue6"

sx_dataset = ServiceXDataset(dataset_uproot, image=uproot_transformer_image)
ds = ServiceXSourceUpROOT(sx_dataset, "nominal")
data = (
    ds.Select("lambda e: {
        'lep_pt_1': e.lep_Pt_1,
        'lep_pt_2': e.lep_Pt_2
        }")
    .value()

print(data)

在本地数据集上运行

可以在本地文件上运行。这在测试或构建代码时效果很好,但如果需要在大批文件上运行则非常糟糕。建议仅使用单个文件。在大多数情况下,它是ServiceX后端版本的直接替换。

首先,必须安装func_adl_servicexlocal变体。如果你使用pip,可以执行以下操作

pip install func_adl_servicex[local]

安装完成后,以下操作将正常工作

from func_adl_servicex import SXLocalxAOD

dataset_xaod = "my_local_xaod.root"
ds = SXLocalxAOD(dataset_xaod)
data = (ds
    .SelectMany('lambda e: (e.Jets("AntiKt4EMTopoJets"))')
    .Where('lambda j: (j.pt()/1000)>30')
    .Select('lambda j: j.pt()')
    .AsAwkwardArray(["JetPt"])
    .value()
)

print(data['JetPt'])

并将SXLocalxAOD替换为SXLocalCMSRun1AOD以使用CMS后端(当然,还需要更新查询)。

开发

欢迎PR。请随意添加问题以提出新功能或提问。

master分支是最新的提交,这些提交都通过了所有测试,并计划用于下一个版本。版本带有标记。对任何发布版本的修改都是在这些标记之外进行的。

Qastle

这是针对在servicex中运行的的后端工作的人员。

这是为xAOD数据集生成的qastle

(call EventDataset 'ServiceXDatasetSource')

(实际数据集名称通过servicex网络API调用传入。)

这是为ROOT平面文件生成的qastle

(call EventDataset 'ServiceXDatasetSource' 'tree_name')

项目详情


下载文件

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

源分布

func_adl_servicex-2.2.tar.gz (14.3 kB 查看哈希值)

上传于 来源

构建分发版

func_adl_servicex-2.2-py3-none-any.whl (10.7 kB 查看哈希值)

上传于 Python 3

由以下支持