Le script snakemake suivant:Gestion des erreurs SIGPIPE dans snakemake
rule all:
input:
'test.done'
rule pipe:
output:
'test.done'
shell:
"""
seq 1 10000 | head > test.done
"""
échoue avec l'erreur suivante:
snakemake -s test.snake
Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
count jobs
1 all
1 pipe
2
rule pipe:
output: test.done
jobid: 1
Error in job pipe while creating output file test.done.
RuleException:
CalledProcessError in line 9 of /Users/db291g/Tritume/test.snake:
Command '
seq 1 10000 | head > test.done
' returned non-zero exit status 141.
File "/Users/db291g/Tritume/test.snake", line 9, in __rule_pipe
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/thread.py", line 55, in run
Removing output files of failed job pipe since they might be corrupted:
test.done
Will exit after finishing currently running jobs.
Exiting because a job execution failed. Look above for error message
L'explication retourne état de sortie non nul 141 semble dire que snakemake a attrapé l'échec SIGPIPE envoyé par head
. Je suppose que, à proprement parler, snakemake fait ce qu'il faut pour rattraper l'échec, mais je me demande s'il serait possible d'ignorer certains types d'erreurs comme celle-ci. J'ai un script snakemake en utilisant la commande head
et j'essaie de trouver une solution de contournement cette erreur.
Oui, Snakemake définit pipefail par défaut, car dans la plupart des cas, ce sont les utilisateurs qui l'attendent implicitement. Vous pouvez toujours le désactiver pour des commandes spécifiques en ajoutant 'set + o pipefail'; 'à la commande shell. –
Merci! Si vous publiez cela comme réponse, je l'accepterai. – dariober