2017-09-19 6 views
0

je crée cette règle:Snakemake: règle générer des résultats étranges

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""" 

ajouter o Snakemake fichier cette règle:

expand("mapped_reads/merged_samples/{sample}_rg.dedup.bam",sample=config['samples']) 

J'ai trouvé ce résultat étrange sur une autre règle:

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 

Qu'est-ce que j'ai fait de mal?

Si je change la règle de cette façon fonctionne parfaitement:

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""" 
+0

Étant donné que "samfiles.rules" renvoie l'erreur, seriez-vous en mesure de publier le code pour cette règle? – TBoyarski

Répondre

1

Comme il fonctionne parfaitement avec la deuxième façon d'écrire la sortie, je suggère d'utiliser celui-ci. Ce qui se passe est la suivante:

depuis dans la règle de l'entrée est picard:
"mapped_reads/merged_samples/{sample}.dedup.bam"
vous devez avoir une règle qui crée ce fichier en sortie. et dans la règle picard la sortie est: "mapped_reads/merged_samples/{sample}_rg.dedup.bam"

Ainsi, lorsque vous demandez dans votre expansion:
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
snakemake ne sait pas si elle doit utiliser votre règle picard avec sample comme le caractère générique ou votre autre règle avec sample_rg en tant que joker car ils se terminent tous deux et commencent par le même motif. En résumé: essayez de ne pas utiliser deux sorties avec un caractère générique qui peut être étendu. Voici les deux sorties: vous
"mapped_reads/merged_samples/{sample}.dedup.bam"
"mapped_reads/merged_samples/{sample}_rg.dedup.bam"
commencent et se terminent avec exactement le même schéma.

Lorsque vous utilisez: "mapped_reads/merged_samples/{sample}.dedup_rg.bam"
en sortie, le caractère générique ne peut pas être étendu!