使用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文件合并到一个文件中。
可执行文件scanlha
和plotlha
接受一个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
- 可以将各种选项传递到
matplotlib
slegend
,scatter
,colorbar
函数。- 可选记号、文本框、图例位置、颜色等…可手动设置。
- 可以使用
scatterplot
dict必须包含一个conf
dict,它至少指定
要加载的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}$'
编辑和合并
请参见 使用其他(非)SLHA工具扫描
参见Runner模块的API文档 相关工具editlha--help
和mergelha--help
推荐PyPI第三方库