使用Snakemake CLI将可变长度数组声明为配置值

时间:2018-11-27 18:15:35

标签: configuration command-line-interface snakemake

我有一个Snakemake工作流程,其中顶层配置条目之一是可变大小的数组(在此特定示例中,同级可能包含或可能不包含在分析中)。目前,我正在使用以下配置文件。

{
    "case": "/scratch/standage/12175/BAMs/12175.proband.bam",
    "controls": [
        "/scratch/standage/12175/BAMs/12175.mother.bam",
        "/scratch/standage/12175/BAMs/12175.father.bam"
    ]
}

我知道snakemake允许使用--config标志在命令行上指定配置选项。由于case值是单个字符串,因此在命令行上这样做很简单。但是controls值呢?是否可以在命令行上将值的数组/列表作为配置选项之一传递?

2 个答案:

答案 0 :(得分:1)

  

是否可以在命令行上将值的数组/列表作为配置选项之一传递

我怀疑这是否可能直接实现,但是您可以传递一个用引号引起来的字符串(或逗号或其他)分隔的值,这些值将分割后在Sn​​akefile中列出:

snakemake -C controls='control1 control2 ...'

然后在Snakefile中

controls= config['controls'].split(' ')

答案 1 :(得分:0)

另一种解决方案是像这样在命令行上传递变量...

snakemake --config case=proband.bam control1=mother.bam control2=father.bam

...然后在Snakefile中动态解析配置设置。例如,与正则表达式control\d+匹配的任何配置键都对应于一个控件样本。

所以这是可能的,但要花点时间,配置文件可能是更好/更干净的选择。