2017-10-19 4 views
1

Je suis novice dans l'expérimentation de snakemake (la semaine dernière) afin de gérer moins de petits détails pour les workflows, auparavant j'ai codé mon flux de travail spécifique à travers Python.Est-ce que snakemake est le bon outil pour gérer les flux de production médiatisés?

J'ai généré un petit flux de travail qui, parmi les étapes, utilisait des lectures de PE Illumina et exécutait Kraken contre eux. J'analyserais alors la sortie de la sortie de Kraken pour détecter les espèces les plus communes (dans un ensemble de permissible) si une valeur d'espèce n'était pas fournie (en cours d'exécution avec snakemake -s test.snake --config R1_reads = R2_reads = species = « ».

J'ai 2 questions.

  1. Quelle est l'approche compte tenu de la dynamique de sortie/entrée?

Actuellement ma stratégie recommandée pour cela est de créer un fichier temporaire qui contient les espèces détectées, puis cat {input.species} en autres s commandes de l'enfer. Cela ne semble pas élégant, mais en regardant à travers les docs je ne pouvais pas vraiment trouver une alternative adéquate. J'ai remarqué PersistentDicts me laisserait passer des variables entre run: commandes mais je ne sais pas si je peux l'utiliser pour charger des variables dans un shell: section . J'ai également remarqué que les wrappers pourraient me permettre de le gérer. Cependant, à partir du moment où j'ai besoin de cette variable, je vais envelopper le reste de mon flux de travail . Est-ce que snakemake est le bon outil si je veux utiliser l'espèce par la suite pour exécuter un ensemble de scripts spécifiques à l'espèce (avec des workflows spécifiques à plusieurs espèces)? Maintenant, mon impression sur la façon de résoudre ce problème est d'avoir plusieurs fichiers de flux de travail pour les espèces et d'avoir une exécution avec un commutateur qui appelle le flux de travail des espèces associées en fonction de l'espèce.

Appréciez tout aperçu sur ces questions.

-Kim

Répondre

0

Vous pouvez marquer la sortie comme dynamique (par exemple attendre un fichier par espèce). Ensuite, Snakemake déterminera le DAG en aval des tâches après la génération de ces fichiers. Voir http://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#dynamic-files

+0

Merci pour la réponse, cela a du sens pour que la sortie dynamix fasse référence à chaque sortie attendue associée des espèces spécifiques. Je devine à partir de cela que les fichiers temporaires parfois touchés sont la «bonne» façon de progresser? – Kim