snakemake:访问字典值的正确语法

2024-06-01 07:48:08 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我要做的一个例子:

mydictionary={
'apple': 'crunchy fruit',
'banana': 'mushy and yellow'
}

rule all:
    input:
        expand('{key}.txt', key=mydictionary.keys())

rule test:
    output: temp('{f}.txt')
    shell:
        """
        echo {mydictionary[wildcards.f]} > {output}
        cat {output}
        """

由于某种原因,我无法查阅词典的内容。我尝试使用双花括号,但是文本文件的内容变成了文本{mydictionary[wildcards.f]}(而我需要字典中相应条目的内容)。在


Tags: andkeytxt内容appleoutputrule例子
1条回答
网友
1楼 · 发布于 2024-06-01 07:48:08

我确信方括号标记只能用变量值的字符串表示来替换变量,但不支持括号内的任何代码计算。也就是说,{mydictionary[wildcards.f]}将尝试查找一个名为"mydictionary[wildcards.f]"的变量。同样,{mydictionary}[{wildcards.f}]将只将字符串值粘贴在一起。所以,我不认为你能在shell部分内做你想做的事情。相反,您可以在params部分中完成您想要的:

rule test:
    output: temp('{f}.txt')
    params:
        value=lambda wcs: mydictionary[wcs.f]
    shell:
        """
        echo '{params.value}' > {output}
        cat {output}
        """

相关问题 更多 >