snakemake配置参数值是否可以插入/扩展{<name>}值的字符串?

ted*_*oal 1 wildcard-expansion parameter-expansion snakemake

有没有办法在.yaml文件中定义snakemake配置字符串,以便它可以包含{wildcard}和{param}值,并且当在shell命令中使用该字符串时,{<name>}值将替换为"<name>"的实际值?

例如,假设您希望配置字符串定义要作为参数传递给程序的字符串格式:

RG:"ID:{ID} REP:{REP}"

其中上面是.yaml文件,ID和REP是通配符,shell命令会将展开的字符串作为参数传递给程序.

Joh*_*ter 7

让我试着简单回答一下这个问题:

在Snakemake中,您可以为params提供函数,这些函数将通配符作为参数.在这些函数中,您可以执行任何python代码,包括格式化语句来格式化您的配置值,例如

configfile: "config.yaml"

rule:
    output:
        "plots/myplot.{mywildcard}.pdf"
    params:
        myparam=lambda wildcards: config["mykey"].format(**wildcards)
    shell:
        ...
Run Code Online (Sandbox Code Playgroud)

如您所见,您可以使用python unpacking运算符str.format方法来替换配置文件中的值.这假定config["mykey"]产生一个包含与上面相同的通配符的字符串,例如"foo{mywildcard}bar".