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

Configuration 使用Snakemake CLI将可变长度数组声明为配置值,configuration,command-line-interface,snakemake,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/

我有一个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
标志指定配置选项。由于
大小写
值是单个字符串,因此在命令行上执行此操作非常简单。但是
控件
值呢?是否可以将数组/值列表作为命令行上的配置选项之一传递

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

我怀疑这是直接可能的,但您可以传递一个带引号的空格字符串(或逗号或其他)分隔值,并将其拆分为Snake文件中的列表:

snakemake -C controls='control1 control2 ...'
controls= config['controls'].split(' ')
然后在蛇形文件中:

snakemake -C controls='control1 control2 ...'
controls= config['controls'].split(' ')

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

snakemake --config case=proband.bam control1=mother.bam control2=father.bam
…然后在Snake文件中动态解析配置设置。例如,与正则表达式
control\d+
匹配的任何配置键都对应于一个控件示例

所以这是可能的,但是有点长,配置文件可能是更好/更干净的选项