Snakemake读取config文件路径被识别为字符串的问题求助
解决方法
有两种可靠的方式解决这个问题:
方法一:通过params参数中转推荐
在规则中先将config里的参考基因组路径定义为params变量,再在shell命令中引用,这是Snakemake中传递配置变量的标准做法,能避免直接在shell字符串中解析嵌套字典的语法问题:
rule your_rule_name: wildcards: atac_srr=..., rna_srr=... # 新增params定义 params: reference=config['path']['ref_genome'] shell: """ cellranger-arc count --id={wildcards.atac_srr}_{wildcards.rna_srr} \ --reference={params.reference} \ --libraries=libraries/{wildcards.atac_srr}_{wildcards.rna_srr}_libraries.csv \ --localcores=48 \ --localmem=256 """
方法二:修改config变量的引用语法
如果不想新增params,可以尝试改用点符号访问config的嵌套属性,Snakemake支持这种写法解析字典类型的config:
shell: """ cellranger-arc count --id={wildcards.atac_srr}_{wildcards.rna_srr} \ --reference={config.path.ref_genome} \ --libraries=libraries/{wildcards.atac_srr}_{wildcards.rna_srr}_libraries.csv \ --localcores=48 \ --localmem=256 """
原因说明
你遇到的问题是因为在shell的三重引号字符串中,Snakemake对config['path']['ref_genome']这种嵌套字典的索引写法解析优先级有冲突,导致它被当作普通字符串输出。通过params中转或者改用点符号访问,能让Snakemake正确识别并解析配置变量的值。
内容的提问来源于stack exchange,提问作者user25645294
相关产品推荐
相关产品推荐

