使用HEP工具执行参数扫描,这些工具使用(不仅是)lha输入和输出。

ScanLHA的Python项目详细描述


斯坎拉

使用HEP工具执行参数扫描,这些工具使用(不仅是)lha输入和输出。

用例

高能物理(hep)中的典型工具链是一个slha输入文件从频谱生成器(例如spheno)传递到其他hep工具,如higgsbunds和/or微表它们自己返回SLHA输出文件。
为了在不同步骤之间为各种工具提供正确的输入,并使进一步的处理(例如绘图)成为可能,需要对slha格式进行分析,并将其存储在一个存储效率高的表格格式中。
在现象学研究中,在考虑的场景中,大多数物理参数和配置标志保持不变,而只有少数O(1-20)参数以不同的方式变化(网格扫描或随机扫描,未来计划采用更复杂的扫描技术)。
由于组合运算量大,扫描可以并行进行,甚至可以分布在不同的机器上(例如,使用Sun Grid Engine,计划将来使用dask.distributed
结果是一个(或多个)HDF文件(要合并),在结果在二维或三维散点图中可视化之前,可以对其进行进一步编辑。

安装

    pip3 install ScanLHA

可执行文件

  • scanlha-执行lha扫描并保存到hdf文件。
  • plotlha-plot scanlha结果来自hdf文件。
  • editlha-交互式加载/编辑/保存/打印HDF文件。
  • mergelha-将多个HDF文件合并到一个文件中。

可执行文件scanlhaplotlha接受一个yaml输入config文件。

扫描

配置文件必须包含两个字典控制 要使用的扫描/工具类型以及必须在输入文件中存在/扫描的slha块。
为了通过网格计算软件简化相似扫描的分布,可以声明参数 SLHA条目。可以从命令行参数中设置这些项的值/扫描范围。

运行spheno和higgsbunds的基本config.yml文件可能看起来像

    ---
    runner:
      binaries:
        - ['/bin/SPhenoMSSM', '{input_file}', '{output_file}']
        - ['./HiggsBounds', 'LandH', 'SLHA', '3', '0', '{output_file}']
      tmpfs: /dev/shm/slha
      keep_log: true
      timeout: 90
      scantype: random
      numparas: 50000
      constraints: # Higgs mass constraint
        - "result['MASS']['values']['25']<127.09"
        - "result['MASS']['values']['25']>123.09"
    blocks:
        - block: MINPAR
          lines:
              - parameter: 'MSUSY'
                latex: '$M_{SUSY}$ (GeV)'
                id: 1
                random: [500,3500]
              - parameter: 'TanBeta'
                latex: '$\tan\beta$'
                argument: 'value'
              - parameter: 'mu'
                latex: '$\mu$ (GeV)'
                id: 2
                value: 300

其中,id是块中的参数参数的slha id,块中的参数取常量值value,在网格中选择随机或扫描。
可以使用scanlha config.yml--help来验证是否存在新的命令行参数tanbeta
在两个并行线程中运行蝶形higgsbunds链的扫描以scanlha config.yml-p 2--tanbeta 4 scan tanbeta 4.h5开始(默认情况下os.cpucount()用于-p)。
为此,在生成输入和输出文件的runner['tmpfs'](默认值:/dev/shm/)中,两个二进制文件副本存储在两个随机命名的目录中。
或者,可以指定值:[1,2,10]作为行tanbeta而不是参数 甚至扫描:[1,50,50]扫描tanbeta(对于msusy的每个随机值,从1到50步扫描),并将结果保存到一个文件中(同样,可以将参数选项设置为扫描随机并从命令行提供相应的编号)。网格扫描可以有一个分布属性等于线性、对数、几何、排列、均匀正常

runner['binaries']中的可执行文件是使用给定参数为每个参数点运行的子序列。对于每个点,都会生成一个随机命名的{input_file}并可以作为参数传递 对可执行文件。同样,输出文件}应该由可执行文件编写,并最终在之后进行解析。也可以直接使用python(或c-python)实现,而不是使用可执行文件,方法是实现一个运行程序模块

绘图

用于扫描的config.yml还可以包含一个scatterplot字典(但也可以包含在单独的文件中)。

绘图功能是:

  • 自动为标签使用指定lha块的乳胶属性。
  • x/y/z轴的字段可以由blockname.values.lhaid或指定的参数属性指定。
  • 可以使用保存在数据中的现有字段计算要打印的新字段
  • 可以使用pdata
  • 可以将各种选项传递到matplotlibslegendscattercolorbar函数。
  • 可选记号、文本框、图例位置、颜色等…可手动设置。

scatterplotdict必须包含一个confdict,它至少指定 要加载的hdf数据文件。另外,可以设置X/Y/Z轴或其他绘图配置的默认值,而不必 在绘图定义中重复(但可以覆盖)。此外,plots键包含一个dict列表 指定要打印的文件名和数据。

示例配置可能类似于

    ---
    scatterplot:
      conf:
        datafile: "mssm.h5"
        newfields:
          TanBeta: "DATA['HMIX.values.2'].apply(abs).apply(tan)"
                   # the string is passed to eval
        constraints:
          - "PDATA['TREELEVELUNITARITYwTRILINEARS.values.1']<0.5"
          # enforces unitarity on the sample
      plots:
          - filename: "mssm_TanBetaMSUSYmH.png"
            # one scatterplot
            y-axis: {field: TanBeta, label: '$\tan\beta$'}
            x-axis:
              field: MSUSY
              label: "$m_{SUSY}$ (TeV)$"
              lognorm: True
              ticks:
                - [1000,2000,3000,4000]
                - ['$1$','$2','$3','$4$']
            z-axis:
              field: MASS.values.25
              colorbar: True
              label: "$m_h$ (GeV)"
            alpha: 0.8
            textbox: {x: 0.9, y: 0.3, text: 'some info'}
          - filename: "mssm_mhiggs.png"
            # multiple lines in one plot with legend
            constraints: [] # ignore all global constraints
            x-axis:
              field: MSUSY,
              label: 'Massparameter (GeV)'
            y-axis:
              lognorm: True,
              label: '$m_{SUSY}$ (GeV)'
            plots:
                - y-axis: MASS.values.25
                  color: red
                  label: '$m_{h_1}$'
                - y-axis: MASS.values.26
                  color: green
                  label: '$m_{h_2}$'
                - y-axis: MASS.values.35
                  color: blue
                  label: '$m_{A}$'

编辑和合并

请参见editlha--helpmergelha--help

使用其他(非)SLHA工具扫描

参见Runner模块的API文档

相关工具

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

推荐PyPI第三方库


热门话题
带EJB的java JPA:无持久性提供程序   检查数字最后一位的java If语句   java解除对象在字符串池中驻留时的字符串类型分配   java如何在Android中使用堆栈?   java删除字符串中数字之后的任何内容   JAVA 7中消除StringBuilder对象(在循环中运行)最后一个逗号的json方法?   字典将值放入Java*中的映射,而不更新现有值(如果存在)   Java中加法和乘法的基本词法分析器   ExoPlayer2中的java检查视频对象   java向HashMap添加对象   java如何配置JavaMelody以监视C3p0数据源中的Jdbc连接   java“Xlint:unchecked”在Intellij中配置后不工作   悬停时将java滑块元素移出   c如何在SWIG生成的Java绑定中转换为SWIGTYPE_p_void类型?   Ant的java代码未在Maven中运行   字典使用公共键创建两个映射值的映射java   java Tomcat 8元空间OutOfMemory问题