Snakemake:规则生成奇怪的结果
Snakemake: rule generate strange results
我创建了这条规则:
rule picard_addRG2:
input:
"mapped_reads/merged_samples/{sample}.dedup.bam"
output:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
params:
sample_idi = config['samples'],
library = "library00"
shell:
"""picard AddOrReplaceReadGroups I={input} O={output} RGID={params.sample_id} RGLB={params.library} RGPL=illumina RGPU=unit1 RGSM=20 RGPU=MP"""
我添加 o Snakemake 文件这条规则:
expand("mapped_reads/merged_samples/{sample}_rg.dedup.bam",sample=config['samples'])
我在另一个规则上发现了这个奇怪的结果:
snakemake --configfile exome.yaml -np
InputFunctionException in line 17 of /illumina/runs/FASTQ/test_play/rules/samfiles.rules:
KeyError: '445_rg'
Wildcards:
sample=445_rg
我做错了什么?
如果我以这种方式更改规则,效果会很好:
rule picard_addRG2:
input:
"mapped_reads/merged_samples/{sample}.dedup.bam"
output:
"mapped_reads/merged_samples/{sample}.dedup_rg.bam"
params:
sample_id = config['samples'],
library = "library00"
shell:
"""picard AddOrReplaceReadGroups I={input} O={output} RGID={params.sample_id} RGLB={params.library} RGPL=illumina RGPU=unit1 RGSM=20 RGPU=MP"""
由于它与第二种写入输出的方式完美配合,我建议使用这种方式。发生的情况如下:
因为在您的规则 picard 中输入是:
"mapped_reads/merged_samples/{sample}.dedup.bam"
您必须有一个将此文件创建为输出的规则。
在您的规则 picard 中,输出是:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
所以当你在扩展中询问时:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
snakemake 不知道它是否必须使用带有 sample
作为通配符的规则 picard 或带有 sample_rg
作为通配符的其他规则,因为它们都以相同的模式结束和开始。
要恢复:尽量不要使用可以扩展的通配符的两个输出。你们两个都输出:
"mapped_reads/merged_samples/{sample}.dedup.bam"
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
以完全相同的模式开始和结束。
当您使用:
"mapped_reads/merged_samples/{sample}.dedup_rg.bam"
作为输出,通配符不能展开!
我创建了这条规则:
rule picard_addRG2:
input:
"mapped_reads/merged_samples/{sample}.dedup.bam"
output:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
params:
sample_idi = config['samples'],
library = "library00"
shell:
"""picard AddOrReplaceReadGroups I={input} O={output} RGID={params.sample_id} RGLB={params.library} RGPL=illumina RGPU=unit1 RGSM=20 RGPU=MP"""
我添加 o Snakemake 文件这条规则:
expand("mapped_reads/merged_samples/{sample}_rg.dedup.bam",sample=config['samples'])
我在另一个规则上发现了这个奇怪的结果:
snakemake --configfile exome.yaml -np
InputFunctionException in line 17 of /illumina/runs/FASTQ/test_play/rules/samfiles.rules:
KeyError: '445_rg'
Wildcards:
sample=445_rg
我做错了什么?
如果我以这种方式更改规则,效果会很好:
rule picard_addRG2:
input:
"mapped_reads/merged_samples/{sample}.dedup.bam"
output:
"mapped_reads/merged_samples/{sample}.dedup_rg.bam"
params:
sample_id = config['samples'],
library = "library00"
shell:
"""picard AddOrReplaceReadGroups I={input} O={output} RGID={params.sample_id} RGLB={params.library} RGPL=illumina RGPU=unit1 RGSM=20 RGPU=MP"""
由于它与第二种写入输出的方式完美配合,我建议使用这种方式。发生的情况如下:
因为在您的规则 picard 中输入是:
"mapped_reads/merged_samples/{sample}.dedup.bam"
您必须有一个将此文件创建为输出的规则。
在您的规则 picard 中,输出是:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
所以当你在扩展中询问时:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
snakemake 不知道它是否必须使用带有 sample
作为通配符的规则 picard 或带有 sample_rg
作为通配符的其他规则,因为它们都以相同的模式结束和开始。
要恢复:尽量不要使用可以扩展的通配符的两个输出。你们两个都输出:
"mapped_reads/merged_samples/{sample}.dedup.bam"
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
以完全相同的模式开始和结束。
当您使用:
"mapped_reads/merged_samples/{sample}.dedup_rg.bam"
作为输出,通配符不能展开!