Snakemake slurm profile

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.

Bonjour,
ça me parait compliqué tout ça. Ca fonctionne pour moi avec un simple config.yaml dans un dossier configs (pas de settings.json ni cluster_config.yaml)

jobs: 100
use-singularity: True
keep-going: True
rerun-incomplete: True
printshellcmds: True
max-jobs-per-second: 10
max-status-checks-per-second: 1
latency-wait: 40

cluster:
  sbatch
    --partition={resources.partition}
    --cpus-per-task={resources.cpus}
    --mem={resources.mem_mb}
    --job-name={rule}-{wildcards}
    --output={rule}-{wildcards}-%j.out
default-resources:
  - mem_mb=500
  - cpus=1
  - partition=fast

et la commande:

snakemake --profile=configs/ -s workflow/Snakefile

Attention à bien définir les ressources par défaut, et à modifier au besoin dans les rules, par exemple:

    rule hisat2:
            input:
                fw = intermediate_path + "/reads/{sample}.fastq.gz"
            output:
                bam = temp(intermediate_path + "/bam_byName/{sample}.sortByName.bam")
            resources:
                mem_mb=7000, 
                cpus=32
...

Bon courage!

Magali

Bonjour,
Merci pour votre réponse. Je suis tout à fait d'accord. Tous ces fichiers sont créés par Cookiecutter. Le seul fichier intéressant finalement est le config.yaml. J'utilisais à l'époque un profile créé avec simple-slurm mais il ne fonctionnait pas non plus, alors j'ai voulu "faire les choses correctement" (bien mal m'en a pris).
J'ai quelques questions qui me viennent :
Pas besoin de --account ?
Depuis la version 7.10, il faut également le flag --parsable. Quelle version de snakemake utilisez vous ?
Le répertoire configs/ est dans votre $HOME/.config/snakemake/ ?

Encore merci pour votre aide.

Si votre compte par défaut est bien défini, ça fonctionne sans --account (mais ça ne gène pas de l'ajouter, et ça peut servir si vous voulez monitorer ce que chaque projet consomme comme ressources).
J'utilise le module snakemake/7.25.0 pour lancer mes workflows (je n'utilise pas --parsable, il faudrait voir dans quels cas ça sert).
Mon dossier configs/ est dans mon projet, là d'où je lance le workflow (mais Snakemake peut peut-être le trouver ailleurs, il faudrait vérifier la doc).

Magali

J'utilise la même version de snakemake. J'ai modifié le slurm profile comme suit:

jobs: 100
use-singularity: True
keep-going: True
rerun-incomplete: True
printshellcmds: True
max-jobs-per-second: 10
max-status-checks-per-second: 1
latency-wait: 600

cluster:
  sbatch
    --account=invalbo
    --parsable
    --partition={resources.partition}
    --cpus-per-task={resources.cpus_per_task}
    --mem={resources.mem_mb}
    --job-name={rule}-{wildcards}
    --output={rule}-{wildcards}-%j.out
default-resources:
  - mem_mb=500
  - cpus=1
  - partition=fast

Mais j'ai toujours le même plantage de snakemake. Je précise que mes rules ont toutes des ressources définies :

rule bwa_mapping:
    message:
        "BWA-MEM mapping sample reads against reference genome sequence"
    resources:
        partition='long',
        cpus_per_task=16,
        mem_mb=32000,
        runtime=1200,
        slurm_extra="--mail-type=ALL --mail-user=loic.talignani@ird.fr"
    params:
        #rg = f"@RG\\tID:{{sample}}\\tSM:{{sample}}\\tPL:Illumina", # Manage ReadGroup
        ref = reference_file,
        other_options_samtools_view = "-bh",
        other_options_samtools_sort = "",
        extra = r"'@RG\tID:{sample}\tSM:{sample}\tCN:SC\tPL:ILLUMINA'",
    input:
        fwdreads = rules.trimmomatic.output.forward_reads,
        revreads = rules.trimmomatic.output.reverse_reads
    output:
        bam = "results/02_Mapping/{sample}_bwa_sorted.bam",
    log:
        output = "results/11_Reports/bwa/{sample}.o",
        error = "results/11_Reports/bwa/{sample}.e"
    shell:
        config["MODULES"]["BWA"]+"\n"+config["MODULES"]["SAMTOOLS"]+"""
            (bwa mem -M -T 0 -t {resources.cpus_per_task} -v 1 -R {params.extra} {params.ref} {input.fwdreads} {input.revreads} |
            samtools view -@ {resources.cpus_per_task} {params.other_options_samtools_view} |
            samtools sort -@ {resources.cpus_per_task} {params.other_options_samtools_sort} -o {output.bam} ) 1> {log.output} 2> {log.error}
        """

Voici de nouveau l'erreur :

Traceback (most recent call last):
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/__init__.py", line 792, in snakemake
    success = workflow.execute(
              ^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/workflow.py", line 1246, in execute
    raise e
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/workflow.py", line 1242, in execute
    success = self.scheduler.schedule()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/scheduler.py", line 636, in schedule
    self.run(runjobs)
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/scheduler.py", line 685, in run
    executor.run_jobs(
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 158, in run_jobs
    self.run(
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 1207, in run
    jobscript = self.get_jobscript(job)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 921, in get_jobscript
    f = self.get_jobname(job)
        ^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 918, in get_jobname
    return job.format_wildcards(self.jobname, cluster=self.cluster_wildcards(job))
                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 980, in cluster_wildcards
    return Wildcards(fromdict=self.cluster_params(job))
                              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.32.4/lib/python3.12/site-packages/snakemake/executors/__init__.py", line 955, 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. Le seule différence avec vous est que j'utilise quelques variables de plus dans les ressources mais ça ne devrait pas poser de problème. (EDIT: j'ai testé avec une autre version de snakemake).

Tu as dans ton profile --cpus-per-task={resources.cpus_per_task} et dans tes ressources par défaut
cpus il faut utiliser la même variable (cpus ou cpus_per_task). Mais je suis pas sure que ce soit ça le problème... Tu peux envoyer un exemple minimal pour reproduire l'erreur? Je regarderai demain.

Je viens de corriger cette erreur, je suis allé un peu vite en copiant-collant votre exemple de profile. Je suis entrain d'isoler le problème. J'ai créé un Snakefile principal dans lequel j'utilise la modularisation vers d'autres modules (mapping, polishing, stats et calling). Il semblerait que le problème vienne du module de calling car lorsque je le désactive, cela fonctionne, à l'exception du nom des jobs et du nombre de cpus qui ne sont pas pris en compte :

  • dans les jobs stats (table du début de log) "min threads" et "max threads" sont à 1.
  • les noms des jobs ne reflètent pas la définition --job-name={rule}-{wildcards}.

Bonjour,
Finalement, le problème ne viendrait pas du snakfile de calling. Je charge les modules suivants :

module load conda slurm-drmaa/1.0.8 snakemake/7.25.0 graphviz/2.40.1

Et quand je lance la commande snakemake :

snakemake --profile slurm/ \
          --jobs 50 \
          --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

J'ai de nouveau un plantage :

Config file config/config.yaml is extended by additional config specified via the command line.
Building DAG of jobs...
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
/bin/sh: conda: command not found
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 930, in execute
    dag.create_conda_envs(
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/dag.py", line 351, in create_conda_envs
    env.create(dryrun)
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/deployment/conda.py", line 405, in create
    pin_file = self.pin_file
               ^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/common/__init__.py", line 221, in __get__
    value = self.method(instance)
            ^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/deployment/conda.py", line 109, in pin_file
    f".{self.conda.platform}.pin.txt"
        ^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/common/__init__.py", line 221, in __get__
    value = self.method(instance)
            ^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/deployment/conda.py", line 102, in conda
    return Conda(
           ^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/deployment/conda.py", line 667, in __init__
    shell.check_output(self._get_cmd(f"conda info --json"), text=True)
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/site-packages/snakemake/shell.py", line 63, in check_output
    return sp.check_output(cmd, shell=True, executable=executable, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/shared/ifbstor1/software/miniconda/envs/snakemake-7.25.0/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command ' singularity --quiet --silent exec --home /shared/ifbstor1/projects/invalbo/slurm-test  /shared/ifbstor1/projects/invalbo/slurm-test/.snakemake/singularity/cbdeafdbbeb174e520693bc40ce1f806.simg sh -c 'conda info --json'' returned non-zero exit status 127.

Quels modules utilisez-vous ? J'ai également essayé de sourcer mon environnement minconda3 avec

source ~/miniconda3/etc/profile.d/conda.sh 2> /dev/null

Mais ça ne change rien. Mais quand j'utilise snakemake/8.0.1, je n'ai plus ce problème, mais j'en rencontre un autre :

Config file config/config.yaml is extended by additional config specified via the command line.
Building DAG of jobs...
MissingRuleException:
No rule to produce --cluster=sbatch --account=invalbo --parsable --partition={resources.partition} --cpus-per-task={threads} --mem={resources.mem_mb} --job-name={rule}-{wildcards} --output={rule}-{wildcards}-%j.out (if you use input functions make sure that they don't raise unexpected exceptions).

L'erreur n'a pas vraiment de sens puisque qu'il s'agit du flag renseigné dans le profile (non modifié depuis la dernière fois).

Je m'acharne un peu à essayer d'ajouter un profile mais il va bien falloir y passer.

Envoyer un exemple minimal pour reproduire l'erreur risque d'être compliqué car mon pipeline est assez gros, avec quatre modules et un Snakefile. Mais je peux éventuellement fournir le Snakefile, les modules et le script de lancement.

Bonjour,
si vous avez un profile, il n'y a pas besoin de remettre toutes les options dans la commande.
Je ne charge que le module snakemake, il n'y a pas besoin de drmaa quand vous utilisez le profile avec cluster:. Avez vous besoin de conda? Vous avez --use-singularity en option, vous utilisez quoi dans les rules?
Je ne suis pas encore passée à Snakemake 8, je ne peux pas vous répondre sur ça. Essayez de repartir d'un exemple simple, que vous complexifierez peu à peu. Vous pouvez m'envoyer l'ensemble des fichiers par mail magali.hennion AT cnrs.fr ou m'ajouter à votre projet si les données ne sont pas sensibles (mhennion), juste le temps que je regarde.

Magali

Bonjour et merci de prendre le temps de répondre.
Effectivement, je mets trop de flags.

J'ai essayé en n'utilisant que snakemake --profile slurm/ -s workflow/Snakefile --use-singularity --use-conda seulement mais ça ne fonctionne pas. Même erreur.

Par contre la commande snakemake --dag | dot -Tpng > dag.png génère sans problème un graphe correct.

J'avais laissé le module slurm-drmaa actif en effet, sans l'utiliser (et il est abandonné dans la version 8). J'ai testé en le retirant mais pas mieux.

J'utilise conda en plus de singularity car j'ai deux wrappers. J'ai aussi des envmodules qui trainent mais inactifs.

Je vais vous rajouter au projet invalbo. Il me faudrait par contre votre User ID pour que je puisse vous ajouter.

le test s'effectue dans le répertoire slurm-test. Il y a un script bash pour lancer les commandes et collecter les stats, un Snakefile modularisé et des modules (map.smk, polishing.smk, stats.smk et calling.smk - ne pas tenir compte des autres qui ne sont pas à jour).

Merci pour l'aide apportée. Je pense que ce n'est pas un grand problème, mais je n'arrive pas à le résoudre.

EDIT : pour info j'ai lancé la commande snakemake --cores 1 --debug qui a donné le résultat suivant :

snakemake --cores 1 --debug
Building DAG of jobs...
Using shell: /usr/bin/bash
Provided cores: 1 (use --cores to define parallelism)
Rules claiming more threads will be scaled down.
Conda environments: ignored
Singularity containers: ignored
Job stats:
job                       count    min threads    max threads
----------------------  -------  -------------  -------------
all                           1              1              1
bwa_mem                      22              1              1
fastqc                       44              1              1
mark_duplicates              22              1              1
samtools_index_markdup       22              1              1
trimmomatic                  22              1              1
total                       133              1              1

Select jobs to execute...

[Thu Feb 29 11:22:51 2024]
rule fastqc:
    input: raw/Sample_6_EKDN230051728-1A_H2F5FDSXC_L3_R2.fastq.gz
    output: qc/fastqc/Sample_6_EKDN230051728-1A_H2F5FDSXC_L3_R2_fastqc.html, qc/fastqc/Sample_6_EKDN230051728-1A_H2F5FDSXC_L3_R2_fastqc.zip
    log: results/11_Reports/quality/fastqc/Sample_6_EKDN230051728-1A_H2F5FDSXC_L3_R2.log
    jobid: 35
    reason: Missing output files: qc/fastqc/Sample_6_EKDN230051728-1A_H2F5FDSXC_L3_R2_fastqc.html; Code has changed since last execution; Params have changed since last execution
    wildcards: sample=Sample_6_EKDN230051728-1A_H2F5FDSXC_L3, reads=2
    resources: tmpdir=/tmp, partition=fast, mem_mb=8000, mem_mib=7630, runtime=600

Traceback (most recent call last):
  File "/shared/ifbstor1/projects/invalbo/slurm-test/.snakemake/scripts/tmppf5p0vkw.wrapper.py", line 17, in <module>
    from snakemake_wrapper_utils.snakemake import get_mem
ModuleNotFoundError: No module named 'snakemake_wrapper_utils'.

J'avais déjà eu cette erreur à la même époque il y a un an. Je viens de voir que la Team IFB-core a installé ce package dans snakemake 8.0.1. Je vais tester.