Bonjour,
Je tente d'utilser un profile slurm qui serait appelé à l'aide du flag --profile.
J'ai d'abord récupéré le nom du cluster à l'aide de la commande sacctmgr list clusters
J'ai créé un environnement conda avec snakemake 7.25.0 et cookiecuter 7.26.
J'ai ainsi créé dans ~/.config/snakemake/ un slurm profile à l'aide de cookie cutter en répondant à différentes question et à l'issue, j'ai obtenu dans un répertoire nommé invalbo/ situé dans le répertoire .config/snakemake/ et contenant les fichiers config.yaml, CookieCutter.py, pycache, settings.json slurm-jobscript.sh slurm-sidecar.py slurm-status.py slurm-submit.py slurm_utils.py.
le fichier config.yaml contien donc :
cluster-sidecar: "slurm-sidecar.py"
cluster-cancel: "scancel"
restart-times: "3"
jobscript: "slurm-jobscript.sh"
cluster: "slurm-submit.py"
cluster-status: "slurm-status.py"
max-jobs-per-second: "10"
max-status-checks-per-second: "10"
local-cores: 1
latency-wait: "600"
use-conda: "True"
use-singularity: "True"
jobs: "2"
printshellcmds: "True"
keep-going: "True"
rerun-incomplete: "True"
jobs: "10"
# Example resource configuration
#default-resources:
# - runtime=1000
# - mem_mb=6000
# # set-threads: map rule names to threads
# set-threads:
# - single_core_rule=1
# - multi_core_rule=10
# # set-resources: map rule names to resources in general
# set-resources:
# - high_memory_rule:mem_mb=12000
# - long_running_rule:runtime=1200
Le fichier settings.json contient :
{
"SBATCH_DEFAULTS": "",
"CLUSTER_NAME": "core",
"CLUSTER_CONFIG": ""
}
Quand je lance snakemake à l'aide de la commande :
snakemake --profile invalbo/ --directory ${workdir}/ --snakefile workflow/Snakefile --unlock
snakemake --profile invalbo/ \
--directory ${workdir}/ \
--snakefile workflow/Snakefile \
--configfile config/config.yaml \
--retries 8 \
--rerun-incomplete \
--keep-going \
--scheduler greedy \
--printshellcmds \
--latency-wait 600 \
--max-jobs-per-second 10 \
--max-status-checks-per-second 5 \
--use-singularity \
--use-envmodule
Le pipeline est bien lancé mais j'ai rapidement un plantage (extrait des logs) :
Unlocking working directory.
Config file config/config.yaml is extended by additional config specified via the command line.
Config file config/config.yaml is extended by additional config specified via the command line.
Config file config/config.yaml is extended by additional config specified via the command line.
Config file config/config.yaml is extended by additional config specified via the command line.
Config file config/config.yaml is extended by additional config specified via the command line.
Building DAG of jobs...
Launch sidecar process and read first output line.
Done reading first output line.
Using shell: /usr/bin/bash
Provided cluster nodes: 10
Job stats:
job count min threads max threads
------------------- ------- ------------- -------------
GenomicsDBImport 4 1 1
GenotypeGVCFs_merge 4 1 1
HaplotypeCaller 116 1 1
all 1 1 1
bcftools_concat 4 1 1
total 129 1 1
mkdir -p Cluster_logs/
Select jobs to execute...
[Mon Feb 26 11:46:10 2024]
Job 310: GATK's HaplotypeCaller SNPs and indels calling for Sample_8_EKDN230051730-1A_H2F5FDSXC_L1 sample
Reason: Missing output files: results/05_Variants/Sample_8_EKDN230051730-1A_H2F5FDSXC_L1.MT.g.vcf
module load gatk4/4.2.6.1
gatk HaplotypeCaller --java-options "-Xmx16000M" -ERC GVCF --output-mode EMIT_ALL_CONFIDENT_SITES -R resources/genomes/GCF_035046485.1_AalbF5_genomic.fna -I results/04_Polishing/Sample_8_EKDN230051730-1A_H2F5FDSXC_L1_md_fixed.bam -O results/05_Variants/Sample_8_EKDN230051730-1A_H2F5FDSXC_L1.MT.g.vcf -L MT 1>results/11_Reports/haplotypecaller/Sample_8_EKDN230051730-1A_H2F5FDSXC_L1.MT_variant-call.o 2>results/11_Reports/haplotypecaller/Sample_8_EKDN230051730-1A_H2F5FDSXC_L1.MT_variant-call.e
Traceback (most recent call last):
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/__init__.py", line 757, in snakemake
success = workflow.execute(
^^^^^^^^^^^^^^^^^
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/workflow.py", line 1095, in execute
raise e
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/workflow.py", line 1091, in execute
success = self.scheduler.schedule()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/scheduler.py", line 606, in schedule
self.run(runjobs)
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/scheduler.py", line 655, in run
executor.run_jobs(
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 155, in run_jobs
self.run(
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 1153, in run
jobscript = self.get_jobscript(job)
^^^^^^^^^^^^^^^^^^^^^^^
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 872, in get_jobscript
f = self.get_jobname(job)
^^^^^^^^^^^^^^^^^^^^^
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 869, in get_jobname
return job.format_wildcards(self.jobname, cluster=self.cluster_wildcards(job))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 931, in cluster_wildcards
File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/executors/__init__.py", line 906, in cluster_params
cluster = self.cluster_config.get("__default__", dict()).copy()
^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
Je ne comprends pas d'où vient l'erreur. Avez-vous un retour d'expérience sur les slurm profiles et si oui, en avez-vous un en exemple ?
Merci d'avance,
Cordialement,
EDIT : j'ai également ajouté une référence à un cluster_config.yaml dans la ligne "CLUSTER_CONFIG" du fichier settings.json
et j'ai créé le fichier cluster_config.yaml dans le répertoire invalbo/ contenant ceci :
__default__:
account: invalbo # your hpc account
partition: fast # the partition you use
mail-user: loic.talignani@ird.fr # your email (optional!)
time: 360 # default time (minutes)
nodes: 1
ntasks: 1
mem: 16GB # default memory
Mais ça ne fonctionne toujours pas. J'ai consulté certains sites spécialisés celui-ci par exempleavec lesquels je me suis inspiré pour tenir compte des exigences de snakemake >7.10 et j'ai modifié le config.yaml en conséquence :
cluster:
sbatch
--account=invalbo
--partition={resources.partition}
--time={resources.runtime}
--job-name=smk-{rule}
--parsable
--mem={resources.mem_mb}
--cpus-per-task={resources.cpus_per_task}
--output=Cluster_logs/{rule}_{jobid}-%j.out
--error=Cluster_logs/{rule}_{jobid}-%j.err
--mail-type=FAIL --mail-user=loic.talignani@ird.fr
default-resources:
- mem_mb=4000
- runtime=480
jobs: 100
restart-times: 3
max-jobs-per-second: 10
max-status-checks-per-second: 1
local-cores: 8
latency-wait: 600
keep-going: True
rerun-incomplete: True
printshellcmds: True
scheduler: greedy
use-conda: True
Mais je rencontre toujours la même erreur malheureusement.