python - snakemake:访问字典值的正确语法
问题描述
这是我正在尝试做的一个例子:
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]}
(而我想要字典中相应条目的内容)。
解决方案
我很确定括号标记只能用其值的字符串表示形式替换变量,但不支持括号内的任何代码评估。也就是说,{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}
"""
推荐阅读
- css - 如何在 Bootstrap 4 中跨越两行
- ios - 如何使用swift在iOS中附加特殊字符?
- java - RestAssured:发布请求返回 500 服务器错误
- python - AttributeError: 'function' 对象没有属性 'set_mode'
- python - Python中文件创建时间和当前时间不匹配
- xamarin - Xamarin Forms 自动调整 ScrollView 中的元素
- c - 如何使用 statx 系统调用?
- mysql - MySQL 在选择 Null 值的日期之间
- macos - 在 OSX 上键入长字符时,终端线已损坏
- apache-camel - 由于错误无法启动捆绑包:org.apache.cxf.cxf-rt-transports-http,骆驼蓝图测试失败