Bonjour,
Je teste un pipeline snakemake, dans lequel j'aimerai faire tourner des outils en multi-threading.
J'ai suivi les instructions décrites dans ce post : Parallélisation slurm avec snakemake
Je lance la commande snakemake :
snakemake --drmaa " --cpus-per-task={cluster.cpus-per-task}" --jobs 6 --use-conda -p -s rules/quantification.rules --configfile ./config/cluster.yaml
avec le fichier cluster.yaml :
__default__:
cpus-per-task: 1
quantify:
cpus-per-task: 12
et la rule pour laquelle j'essaye de faire tourner salmon en multi-threading :
rule quantify:
input:
forward = input_path + "/{sample}_R1.fastq.gz",
rev = input_path + "/{sample}_R2.fastq.gz",
index = directory("data/ref/transcriptome/index_salmon")
output:
quant_dir = directory(output_path + "/{sample}")
conda:
"salmon.yaml"
shell:
"""
salmon quant -i {input.index} -l A -1 {input.forward} -2 {input.rev} -o {output.quant_dir} -p 12 --seqBias
"""
J'obtiens l'erreur suivante :
WorkflowError in line 34 of /shared/ifbstor1/projects/meta_analysis_pd1/RNA_seq_pipeline/validation/rnaseq_pipeline_ose/rules/quantification.rules:
'Wildcards' object has no attribute 'cpus-per-task'
Auriez-vous une idée de ce qui bloque ici?
Merci d'avance !
EDIT :
Le problème venait du fait que j'utilisais un autre fichier de configuration dans mon fichier snakemake et qu'il y avait un conflit avec cluster.yaml.
J'ai finalement trouvé une solution en lancant la commande :
snakemake --drmaa " --cpus-per-task=12" --jobs 6 --use-conda -p -s rules/quantification.rules
et en rajoutant l'option suivante dans ma rules "quantify" :
threads: 12
Je me demande cependant si c'est une manière "correcte" de procéder, là je ne définis pas de cpu-per-task par défaut, est-ce que ça ne risque pas de réserver 12 thread pour toutes les rules sans distinction?
Guillaume