Problème configfile de snakemake

Bonjour,

J'essaie de créer un pipeline avec Snakemake, mais je n'arrive pas à lier les fichier config.yaml et env.yaml à mon script snakemake, tous trois dans le même dossier.

Snakefile

configfile: "config.yaml"

rule all:
    input:
        "mapped_reads/{config[samples]}.bam"

rule bwa_map:
    input:
        "{config[genome]}.fa",
        "data/{config[samples]}.fastq.gz"
    output:
        "mapped_reads/{config[samples]}.bam"
    shell:
        """
            bwa mem -t {config[threads]} {input} | samtools view -Sb - > {output}
        """

config.yaml

samples:
    atteints/Luna/NG-14842_Luna_lib250853_5955_5_1
    atteints/Luna/NG-14842_Luna_lib250853_5955_5_2
genome: ref/Felis_catus.Felis_catus_9.0.dna.toplevel
threads: 4

env.yaml

channels:
  - bioconda
  - conda-forge
  - default
dependencies:
  - bwa == 0.7.17
  - samtools == 1.14

Je n'arrive pas à trouver de solution.

Merci

Bonjour,
pour utiliser conda, il faut ajouter dans tes règles

conda:
   "env.yaml"

et mettre l'option --use-conda dans ta commande snakemake.
Après tu as un soucis dans tes règles dans la définition de tes échantillons. Dans ta règle finale il faut que tu utilises expand() pour lister les échantillons. Et dans ta règle bwa_map, utiliser une wildcard {sample} à la place de config[samples].

Bonne fin de journée

Magali

Bonjour,

Depuis le temps, j'ai modifié le code qui maintenant marche, mais en utilisant des expand() au lieu des wildcard{} dans les règles. Quelle est la différence ?
Aussi, je voudrai utiliser des boucles for (pour traiter plusieurs fichiers et les merger), comment je pourrai faire ?

Merci

Bonjour,
difficile de répondre sans un exemple précis. Mais on n'utilise pas de boucles for dans un script snakemake. Avant de te lancer, il faut avoir compris ce que sont les wildcards. C'est ça qui te sert à faire une action sur chacun de tes échantillons. expand() sert à appliquer une commande unique à une liste de fichiers, par exemple pour merger des fichiers. Tu peux suivre différents tutos pour te former :
https://snakemake.readthedocs.io/en/stable/tutorial/tutorial.html
https://ifb-elixirfr.gitlab.io/cluster/doc/tutorials/snakemake/#0
Bonne journée!

Magali