# Snakemake slurm profile

**URL:** <https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960>\
**Category:** Scientific support\
**Created:** [Février 26, 2024, 10:52 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960 "2024-02-26T10:52:29Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 26, 2024, 10:52 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/1 "2024-02-26T10:52:29Z")

</div>

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 :

```auto
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 :

```auto
{
    "SBATCH_DEFAULTS": "",
    "CLUSTER_NAME": "core",
    "CLUSTER_CONFIG": ""
}

```

Quand je lance snakemake à l'aide de la commande :

```auto
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) :

```auto
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 :

```auto
__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 exemple](https://fame.flinders.edu.au/blog/2021/08/02/snakemake-profiles-updated)avec lesquels je me suis inspiré pour tenir compte des exigences de snakemake \>7.10 et j'ai modifié le config.yaml en conséquence :

```auto
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.

---

<div class="post-metadata">

**Author:** ![Mag](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/mag/32/338_2.png) [@Mag](https://community.france-bioinformatique.fr/u/Mag)\
**Post date:** [Février 26, 2024, 2:06 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/2 "2024-02-26T14:06:06Z")

</div>

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)

```auto
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:

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

```

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

```auto
    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

---

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 26, 2024, 2:14 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/3 "2024-02-26T14:14:10Z")

</div>

> [@ltalignani](#):
>
> 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 :

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.

---

<div class="post-metadata">

**Author:** ![Mag](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/mag/32/338_2.png) [@Mag](https://community.france-bioinformatique.fr/u/Mag)\
**Post date:** [Février 26, 2024, 2:31 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/4 "2024-02-26T14:31:37Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 26, 2024, 2:45 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/5 "2024-02-26T14:45:10Z")

</div>

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

```auto
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 :

```auto
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 :

```auto
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).

---

<div class="post-metadata">

**Author:** ![Mag](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/mag/32/338_2.png) [@Mag](https://community.france-bioinformatique.fr/u/Mag)\
**Post date:** [Février 26, 2024, 4:39 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/6 "2024-02-26T16:39:27Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 27, 2024, 11:24 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/7 "2024-02-27T11:24:23Z")

</div>

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}.

---

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 28, 2024, 12:26 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/8 "2024-02-28T12:26:00Z")

</div>

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

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

```

Et quand je lance la commande snakemake :

```auto
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 :

```auto
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

```auto
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 :

```auto
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.

---

<div class="post-metadata">

**Author:** ![Mag](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/mag/32/338_2.png) [@Mag](https://community.france-bioinformatique.fr/u/Mag)\
**Post date:** [Février 29, 2024, 8:57 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/9 "2024-02-29T08:57:31Z")

</div>

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](http://cnrs.fr) ou m'ajouter à votre projet si les données ne sont pas sensibles (mhennion), juste le temps que je regarde.

Magali

---

<div class="post-metadata">

**Author:** ![ltalignani](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/ltalignani/32/894_2.png) [@ltalignani](https://community.france-bioinformatique.fr/u/ltalignani)\
**Post date:** [Février 29, 2024, 9:39 UTC](https://community.france-bioinformatique.fr/t/snakemake-slurm-profile/3960/10 "2024-02-29T09:39:30Z")

</div>

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 :

```auto
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](https://community.france-bioinformatique.fr/t/modulenotfounderror-no-module-named-snakemake-wrapper-utils/2701) a installé ce package dans snakemake 8.0.1. Je vais tester.
