我想要一个规则来执行正常和肿瘤之间的重新排列。主要问题是我不知道如何管理这个问题。它是通配符还是扩展我的问题的答案?
这是我的样品清单:
conditions:
pair1:
tumor: "432"
normal: "433"
Run Code Online (Sandbox Code Playgroud)
所以规则需要是这样的
rule gatk_RealignerTargetCreator:
input:
expand("mapped_reads/merged_samples/{sample}.sorted.dup.reca.bam",sample=config['conditions']['pair1']['tumor']),
"mapped_reads/merged_samples/{sample}.sorted.dup.reca.bam",sample=config['conditions']['pair1']['normal']),
output:
"mapped_reads/merged_samples/{pair1}.realign.intervals"
Run Code Online (Sandbox Code Playgroud)
如何在条件下对所有键执行此操作?(我想有更多的一对)
我试过这个代码:
input:
lambda wildcards: config["conditions"][wildcards.condition],
tumor= expand("mapped_reads/merged_samples/{tumor}.sorted.dup.reca.bam",tumor=config['conditions'][wildcards.condition]['tumor']),
normal = expand("mapped_reads/merged_samples/{normal}.sorted.dup.reca.bam",normal=config['conditions'][wildcards.condition]['normal']),
output:
"mapped_reads/merged_samples/{tumor}/{tumor}_{normal}.realign.intervals"
Run Code Online (Sandbox Code Playgroud)
名称“通配符”未定义
??
wildcards不是在规则输入中“直接”定义的。你需要使用一个函数来wildcards代替。我不确定我是否完全理解您想要做什么,但您可以尝试类似的操作。
def condition2tumorsamples(wildcards):
return expand(
"mapped_reads/merged_samples/{sample}.sorted.dup.reca.bam",
sample=config['conditions'][wildcards.condition]['tumor'])
def condition2normalsamples(wildcards):
return expand(
"mapped_reads/merged_samples/{sample}.sorted.dup.reca.bam",
sample=config['conditions'][wildcards.condition]['normal'])
rule gatk_RealignerTargetCreator:
input:
tumor = condition2tumorsamples,
normal = condition2normalsamples,
output:
"mapped_reads/merged_samples/{condition}.realign.intervals"
# remainder of the rule here...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5772 次 |
| 最近记录: |