正确地使用snakemake中的多行配置文件作为输入



由于各种原因,我希望能够在单独的配置文件中定义我的输入。不使用配置文件的当前版本如下:

rule test:
input:
labs = "data/labs.csv"
demo = "data/demo.csv"
output:
"outputs/output.txt"
script:
"programs/myprogram.py"

我希望我的配置文件是这样的:

{
"inputs": {
"labs" : "data/labs.csv",
"demo": "data/demo.csv"
}
}

然后我的蛇形文件是:

rule test:
input:
config["inputs"]
output:
"outputs/output.txt"
script:
"programs/myprogram.py"

然而,我得到一个错误告诉我,我缺少规则的输入文件,并注意到受影响的文件实验室和演示。

我想我可以把它解析成一个也许输入可以理解的列表,但我希望我的输入理想地保留它们的名称。不幸的是,我一点也不清楚如何做到这一点。

yaml可能是格式化配置的更好选择,因为它更具可读性。假设config.yml包含:

inputs:
labs: data/labs.csv
demo: data/demo.csv

我们可以用configfile加载这个yaml。现在,请确保使用**config["inputs"],因为这将扩展字典的内容并将其作为key=value组合传递:

configfile: "config.yml"
rule test:
input: **config["inputs"] 
shell: 'echo {input}'

相关内容

  • 没有找到相关文章

最新更新