gpt4 book ai didi

bioinformatics - 在参数上使用通配符

转载 作者:行者123 更新时间:2023-12-04 06:52:10 25 4
gpt4 key购买 nike

我尝试使用一种工具,但我需要在输入时使用通配符。

这是一个例子:

aDict = {"120":"121" } #tumor : normal


rule all:
input: expand("{case}.mutect2.vcf",case=aDict.keys())


def get_files_somatic(wildcards):
case = wildcards.case
control = aDict[wildcards.case]
return [case + ".sorted.bam", control + ".sorted.bam"]



rule gatk_Mutect2:
input:
get_files_somatic,

output:
"{case}.mutect2.vcf"

params:
genome="ref/hg19.fa",
target= "chr12",
name_tumor='{case}'
log:
"logs/{case}.mutect2.log"
threads: 8
shell:
" gatk-launch Mutect2 -R {params.genome} -I {input[0]} -tumor {params.name_tumor} -I {input[1]} -normal {wildcards.control}"
" -L {params.target} -O {output}"

我有这个错误:

'Wildcards' object has no attribute 'control'

所以我有一个带有 case 和 control 的函数。我无法提取代码。

最佳答案

通配符源自输出文件/模式。这就是为什么您只有通配符 case 的原因。您必须从中获得控制权。尝试用这个替换你的 shell 语句:

run:
control = aDict[wildcards.case]
shell(
"gatk-launch Mutect2 -R {params.genome} -I {input[0]} "
"-tumor {params.name_tumor} -I {input[1]} -normal {control} "
"-L {input.target2} -O {output}"
)

关于bioinformatics - 在参数上使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com