2017-08-10 4 views
0

Y at-il un moyen d'accomplir la règle helpAll suivante sans créer les fichiers vides inutiles helpA, helpB, helpC, puis en les supprimant?Existe-t-il un moyen de chaîner les règles de snakemake sans fichiers tactiles?

rule helpA: 
    output: touch("helpA") 
    shell: "echo 'help on subject <A>'" 

rule helpB: 
    output: touch("helpB") 
    shell: "echo 'help on subject <B>'" 

rule helpC: 
    output: touch("helpC") 
    shell: "echo 'help on subject <C>'" 

rule helpAll: 
    input: "helpA","helpB","helpC" 
    shell: "rm {input} 

Une bonne solution serait une dépendance de la règle du genre suivant, mais ce n'est pas valide snakecode:

rule helpAll: 
    input: rules.helpA,rules.helpB,rules.helpC 

ou:

rule helpAll: 
    depends_on_rule: helpA,helpB,helpC 

Répondre

0

Je ne pense pas que snakemake fonctionnerait correctement sans créer de fichiers sur le disque.

Mais vous pouvez utiliser temp pour que les fichiers soient automatiquement supprimés. Plus en détail, de la documentation:

Snakemake permet de marquer les fichiers de sortie comme temporaire, de telle sorte qu'ils sont supprimés une fois tous les emplois consommation a été exécuté.

reference

+1

Vous pouvez même les combiner: 'temp (touche ("file"))'. –

+0

Cela ressemble à la solution! Merci. – tedtoal