用于汇总事件数据的python库

alphatwirl的Python项目详细描述


pypi versionanaconda server badge网站/10.5281/zenodo.597010" rel="nofollow"><doi构建状态codecov

< BR>

用于将事件数据汇总为多变量分类数据的python库

说明

alphatwirl是一个python库,它将事件数据作为数据帧汇总到多变量分类数据中。输入到alphatwirl的事件数据是一个事件具有一个条目(或行)的数据:例如,根目录中的数据//home.cern/topics/大型强子对撞机" rel="nofollow">大型强子对撞机在欧洲核子研究中心进行实验。事件数据通常太大,无法加载到内存中,因为它们的条目与事件一样多。多元分类数据是alphatwirl的输出,每一个分类有一行。它们通常小到可以加载到内存中,因为它们只有与类别一样多的行。例如,用户可以将它们作为数据帧导入rpandas,后者通常将所有数据加载到内存中,并且可以使用一组丰富的数据操作av在R和熊猫中可用。


快速启动

  • Jupyter笔记本:alphatwirl快速入门

______binder


CHEP 2018年

  • Tai Sakuma,"AlphaTwirl:一个用于将事件数据汇总到 多维分类数据"CHEP 2018,2018年7月9-13日 保加利亚索非亚,(indico


功能

输入格式

  • 事件数据:AlphaTwirl的输入数据一般是事件数据
    • 事件数据是一个事件有一个条目(行)的任何数据。
    • 根树中的数据通常是事件数据
      • 例如,一个质子-质子碰撞事件的一个条目
    • 事件数据通常很大,因为它们具有与 事件
      • 例如,它们通常存储在服务器的许多文件中 机器或专用存储系统
  • 根目录树:AlphaTwirl的主要输入格式
    • 扁平树:只有基元的根树 类型,如intfloat以及这些类型的数组。
    • 使用额外的代码访问每个类,还可以读取 具有持久对象的树
  • 用户可以编写模块以支持其他格式

输出格式
  • 多元分类数据:AlphaTwirl的输出数据 是多元分类数据
    • 它们通常很小,因为它们只有和类别一样多的条目。
      • 通常小到可以作为文本文件存储在笔记本电脑中。
  • 固定宽度格式:具有固定宽度格式的文本文件 主要用作输出格式
    • 只要数据量小,这种格式就很方便。你 可以用文本编辑器浏览。你可以把它导入 r熊猫作为数据帧。
    • 示例输出文件如下所示
process htbin njetbin minChi         n
    QCD   400       2      0  8.15e+05
    QCD   400       2   0.05  3.49e+05
    QCD   400       2    0.1  1.18e+05
    QCD   400       2   0.15  3.78e+04
                   ⋮
 TTJets  1200       6   1.45      0.00
 TTJets  1200       6    1.5      0.00
  • 有计划支持羽毛
  • 用户可以编写模块以支持其他格式

分离应用联合收割机策略

键和值
  • 键:按键定义类别
  • 值:值在定义的每个组中汇总 类别
  • 键和值是事件对象的属性,它们是
    • 存储在输入文件中
    • 或由scribllers创建

TaBLE配置

  • 表可以由python字典列表配置。
    • 下面的示例代码配置了五个表
htbin=Binning(boundaries=(0,200,400,800))njetbin=Binning(boundaries=(1,2,3,4,5))tblcfg=[dict(keyAttrNames=('mht40',),binnings=(Round(10,0),),keyOutColumnNames=('mht',)),dict(keyAttrNames=('ht40',mht40'),binnings=(htbin,Round(10,0)),keyOutColumnNames=('ht','mht')),dict(keyAttrNames=('ht40','nJet40',mht40'),binnings=(htbin,njetbin,Round(10,0)),keyOutColumnNames=('ht','njet','mht')),dict(keyAttrNames=('ht40',jet_pt'),binnings=(htbin,RoundLog(0.1,100)),keyIndices=(None,0),keyOutColumnNames=('ht','jet_pt')),dict(keyAttrNames=('ht40',jet_pt'),binnings=(htbin,RoundLog(0.1,100)),keyIndices=(None,*'),keyOutColumnNames=('ht','jet_pt')),]
  • 更复杂的例子
dict(keyAttrNames=('ieta','iphi','depth','QIE10_index'),keyIndices=('(*)','\\1','\\1','\\1'),binnings=(echo,echo,echo,echo),valAttrNames=('QIE10_energy',),valIndices=('\\1',),keyOutColumnNames=('ieta','iphi','depth','idxQIE10'),valOutColumnNames=('energy',),summaryClass=alphatwirl.Summary.Sum)
指数
  • 变量是标量或数组。索引指定数组的元素
  • 索引可以灵活配置
    • 一个简单的例子:
      dict(keyattrnames=('ht40','jet_pt'),keyindexs=(none,0),)
      ht40是标量;索引是nonejet_pt是一个数组;0 指定jet_pt的第一个元素
    • 包括:
      dict(keyattrnames=("ht40","jet_pt"),keyindexs=(none,"*"),")
      '*'表示所有元素。所有对的ht40jet_pt
    • 所有组合:
      dict(keyattrnames=('jet_pt','muon_pt'),keyindexs=('*''*),)
      jet_ptmuon_pt
    • 的所有组合
    • 背面参考:
      dict(keyattrnames=('jet_pt','jet_eta'),keyindexs=('(*)','\\1'),)
      具有相同索引的成对jet_ptjet_eta'(*)'中的括号表示要记住索引。 '\\1'引用第一个括号中的索引。
    • 一个更复杂的例子:
      dict(keyattrnames=('jet_pt','jet_eta','muon_pt','muon_eta'),keyindexs=('(*)','\\1','(*)','\\2'),)
宾宁斯
  • 实现了四个binnigs类
    • 装箱:装箱边界由用户手动指定
      binning(边界=(0,200,400,800))
    • 圆形:相等的箱子宽度
      圆形(10,0)
      10是箱子宽度,0是一个边界。A的下边缘 包括垃圾箱。上边缘属于下一个箱子。
    • 圆木:在对数中等于箱子宽度
      圆木(0.1100)
    • 回声:值本身
      回声(0.1100)
  • 用户可以编写自己的自定义binning类
涂鸦者
  • 如果表配置或事件选择所需的变量不在 在输入文件中,用户可以编写scribblers来动态创建它们。
  • 存储在输入文件中的变量和 scribblers可以用作键和值,方法与 表配置和事件选择

事件选择
  • 事件选择的条件可以由嵌套元组和字典指定。
dict(All=('ev : ev.ht[0] >= 400','ev : ev.mht[0] >= 200',dict(Any=('ev : ev.nJet[0] == 1',dict(All=('ev : ev.nJet[0] >= 2','ev : ev.minChi[0] >= 0.7’))))))
  • allany的嵌套组合
    • 全部:需要满足所有条件
    • 任何:至少需要满足其中一个条件
  • 用户可以编写自己的all和any实现来添加 功能,例如,计算满足 每个条件
依赖注入
  • alphatwirl中的类通常在抽象类上操作(在 python,抽象类实际上不需要存在。鸭子打字 改为)。
  • 大多数操作的特定实现在运行时确定 时间:输入格式、输出格式、并发方法、事件 选择,对象选择,分类,事件摘要 方法,摘要收集方法,交付方法,甚至 进度条。
    • 此外,每个特定的实现通常不会 也取决于框架。事实上,同样的事件 选择代码可用于Heppy。
  • 具体实现由配置指定。

按地址快速分支访问

多处理
  • 多处理 可用于同时处理事件
  • 进度条在终端屏幕上平行增长,指示每个进程的进度。
  25.10% ::::::::::                               |      753 /     3000 |:  WJetsToLNu_HT1200to2500_madgraph 
  30.47% ::::::::::::                             |      914 /     3000 |:  WJetsToLNu_HT1200to2500_madgraph 
  29.30% :::::::::::                              |      879 /     3000 |:  WJetsToLNu_HT1200to2500_madgraph 
  85.40% ::::::::::::::::::::::::::::::::::       |      854 /     1000 |:  WJetsToLNu_HT1200to2500_madgraph 
  27.57% :::::::::::                              |      827 /     3000 |:  WJetsToLNu_HT2500toInf_madgraphM 
  25.47% ::::::::::                               |      764 /     3000 |:  WJetsToLNu_HT2500toInf_madgraphM 
  79.60% :::::::::::::::::::::::::::::::          |      796 /     1000 |:  WJetsToLNu_HT2500toInf_madgraphM 
  25.50% ::::::::::                               |      765 /     3000 |:  WJetsToLNu_HT2500toInf_madgraphM

批处理系统
  • 也可以使用批处理系统而不是多处理系统
  • 目前,接口 实现了htcondor
  • 用户可以编写模块以使用其他批处理系统。
  • 当作业在批处理系统中运行时,主进程是 在前台运行,监视作业的进度,以及 在作业完成时收集结果。
  • 失败的作业将自动重新提交。
  • 作业可以按输入文件和事件的数量进行拆分。
    • 一个输入文件可以分成多个作业
    • 一个作业可以包含多个输入文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
标头中的java cachecontrol未反映在jetty服务器上   java根据XSLT版本选择XSLT处理器   使用Lombok项目的java不明确方法调用   java powershell为每个文件构建一个要执行的字符串   java如何在Vaadin组合框中添加搜索图标?   从输入流读取有限长度的java最佳实践   动态操作后GridLayoutManager中的java项高度   java理解ThreadPoolExecutor中的池大小   在java中保持地址空间不变   java无法理解为什么我有空对象引用   java优化项目Euler#22   java会因为多线程而覆盖代码中的DataSnapshot吗   java文件夹层次结构遍历   java在循环中动态创建方法   音频Java无法组合2个以上。wav文件   java在具有UTF8样式名称的文件夹/目录中运行可运行的JAR文件   java如何在具有动态根键时反序列化JSON