2017-10-04 4 views
1

Je tente d'exécuter une collection de métriques picard tools dans snakemake. Un --dryrun fonctionne très bien sans erreur. Lorsque je lance le fichier snake, je reçois une exception MissingOutputException pour des raisons que je ne comprends pas.Snakemake MissingOutputException latence-attente ignorée

Tout d'abord voici ma règle

rule CollectAlignmentSummaryMetrics: 
    input: 
     "bam_input/final/{sample}/{sample}.ready.bam" 
    output: 
     "bam_input/final/{sample}/metrics/{reference}/alignment_summary.metrics" 
    params: 
     reference=config['reference']['file'], 
     memory="10240m" 
    run: 
     "java -Xmx{params.memory} -jar $HOME/software/picard/build/libs/picard.jar CollectAlignmentSummaryMetrics R={params.reference} I={input} O={output}" 

Maintenant l'erreur.

snakemake --latency-wait 120 -s metrics.snake -p 
Provided cores: 1 
Rules claiming more threads will be scaled down. 
Job counts: 
     count jobs 
     38  CollectAlignmentSummaryMetrics 
     1  all 
     39 

rule CollectAlignmentSummaryMetrics: 
    input: bam_input/final/TB5173-T14/TB5173-T14.ready.bam 
    output: bam_input/final/TB5173-T14/metrics/GRCh37/alignment_summary.metrics 
    jobid: 7 
    wildcards: reference=GRCh37, sample=TB5173-T14 

Error in job CollectAlignmentSummaryMetrics while creating output file bam_input/final/TB5173-T14/metrics/GRCh37/alignment_summary.metrics. 
MissingOutputException in line 21 of/home/bwubb/projects/PD1WES/metrics.snake: 
Missing files after 5 seconds: 
bam_input/final/TB5173-T14/metrics/GRCh37/alignment_summary.metrics 
This might be due to filesystem latency. If that is the case, consider to increase the wait time with --latency-wait. 
Exiting because a job execution failed. Look above for error message 
Will exit after finishing currently running jobs. 
Exiting because a job execution failed. Look above for error message 

L'option --attitude-wait est complètement ignorée. J'ai même essayé de le cogner jusqu'à 84600. Si je dois exécuter la commande picard java prévue, il n'exécute aucun problème. J'ai fait plusieurs pipelines de serpent sans problèmes mystérieux, donc ça me rend fou. Merci pour tout aperçu!

Répondre

1

merci pour les rapports.

  1. C'est un bug que la latence-attente n'est pas propagée lors de l'utilisation de la directive run. J'ai fixé cela dans la branche principale.
  2. Dans votre règle, vous utilisez la directive run. Après run, Snakemake attend du code Python brut. Vous fournissez simplement une chaîne. Cela signifie que Python initialisera simplement la chaîne puis quittera. Ce que vous voulez vraiment ici est d'utiliser la directive shell. Voir here. En utilisant la directive shell, votre problème actuel sera résolu et vous ne devriez pas être affecté par le bogue. Il n'y a pas non plus besoin de modifier la latence-wait. Quoi qu'il en soit, le correctif pour le bug de latence-attente se produira dans la prochaine version pour Snakemake.
+0

AHHH! Je n'ai même pas remarqué que j'ai mis ** run ** au lieu de ** shell **. C'était aveugle. Merci beaucoup! – bwubb