是否有一种方法可以加快不同bash文件中多个参数的设置?



我正在使用SciNet计算机进行一些模拟工作,其中一部分工作要求我使用许多不同的参数组合来模拟数据和测试模型,这些参数组合必须在每个bash文件中单独设置,然后才能通过终端运行它们。这些只是。sh文件,运行带有特定选项的。r脚本,我在Windows上使用一个简单的文本编辑器编辑它们。

但是,如果我必须在文本文件中手工指定100多个组合,那么这会花费很多时间。我在想,有没有办法加快这个过程?可能是一个脚本或程序,我可以运行从一个基本文件复制,并作出相应的改变参数。或者,如果有一种方法可以创建一个数据集,并用bash文件可以从中提取的参数值列填充它,那就太好了。到目前为止,我还没有找到任何东西,但我觉得我可能找错地方了。

目前,我可以通过复制和粘贴参数之间最相似的模拟文件来创建一些快捷方式,但这仍然需要我手动进入每个文件以更改不匹配的参数。

一个设置的参数主体如下所示:

--studies 10 --rate 0.003 --alpha 3 --beta 3 --reps 10 --mc 500 --job ${SLURM_ARRAY_TASK_ID} --out /Results

你描述这个问题的方式令人困惑。因此,注释的数量

下面的脚本是我想象的你正在努力解决的问题。也就是说,

  • 对场景参数进行编码,
  • 使用这些参数进行循环。

脚本:

#!/bin/bash
DBG=0
COMMAND_ROOT="something_mix_of_command_and_shared_parameters"
###
### Defining Scenario Parameters
###
rates=( 0.001 0.002 0.003 0.004 0.005 )
alphas=( 1 2 3 )
betas=( 1 2 3 )
reps=( 5 10 20 50 100 )
mcs=( 400 450 500 550 600 )
###
### Looping on parameters for "test" plan
###
for rate in ${rates[@]}
do
test ${DBG} -eq 1 && echo -e "t [rate= ${rate}] ..."
for alpha in ${alphas[@]}
do
test ${DBG} -eq 1 && echo -e "tt [alpha= ${alpha}] ..."
for beta in ${betas[@]}
do
test ${DBG} -eq 1 && echo -e "ttt [beta= ${beta}] ..."
for rep in ${reps[@]}
do
test ${DBG} -eq 1 && echo -e "tttt [rep= ${rep}] ..."
for mc in ${mcs[@]}
do
test ${DBG} -eq 1 && echo -e "ttttt [mc= ${mc}] ..."
SLURM_ARRAY_TASK_ID="${some_unique_identifier}"
COMMAND_PARAMETERS="
--studies 10 
--rate ${rate} 
--alpha ${alpha} 
--beta ${beta} 
--reps ${rep} 
--mc ${mc} 
--job ${SLURM_ARRAY_TASK_ID} --out /Results"
echo -e " Running permutation [${rate}|${alpha}|${beta}|${rep}|${mc}] ..."
#${COMMAND_ROOT} ${COMMAND_PARAMETERS}
done
echo ""
done
done
done
done
exit

最新更新