Solution
mkdir -p ~/work/TRAINING/CLUSTER
mkdir -p ~/work/TRAINING/ANALYSES
cd ~/work/TRAININGLes réponses aux questions de ce TP peuvent être visibles en appuyant sur le bouton Solution. À n’utiliser que si vous bloquez bien sûr !
L’objectif de cette partie est de présenter comment lancer des calculs sur l’infrastructure de migale (serveur front).
Pour une question de reproductibilité et de tracabilité, les commandes que nous enverrons sur le cluster seront stockées dans des fichiers .sh, nommés en fonction de l’outil à lancer.
Cette étape sert avant tout à vérifier que les fichiers récupérés et sur lesquels on s’apprête à travailler sont conformes à ce qu’on a demandé au prestataire de séquençage
Choses à vérifier :
FastQC
MultiQC
Avant même de nettoyer les reads, il peut s’avérer utile d’effectuer une classification taxonomique. Cela permet entre autres de détecter une contamination (hôte, environnement, humain…) ou bien de vérifier si les données sont cohérentes avec ce qu’on attend.
Attention au choix de la banque, qui peut fausser l’interprétation !
Kraken2
Les banques spécifiques à Kraken sont mises à disposition dans le répertoire suivant : /db/outils/kraken2-2026/
Nous allons utiliser ici l’outil Kaiju
Les banques spécifiques à kaiju sont mises à disposition dans le répertoire suivant : /db/outils/kaiju-2024/
FASTP
Dans certains projets, il peut être intéressant de filtrer les séquences d’un contaminant (hôte, contaminants connus…)
Dans nos échantillons, il n’y a pas réellement d’hôte, mais voici par exemple la procédure pour écarter les séquences d’un des génomes viraux présents dans le jeu de données. Il s’agit de la séquence de Sorex araneus polyomavirus 1 isolate qui est présente dans le fichier /save_projet/metagenomics_training/contaminants/conta.fasta.
Dans certains projets, il peut être intéressant de filtrer les séquences d’un contaminant (hôte, contaminants connus…)
Dans nos échantillons, il n’y a pas réellement d’hôte, mais voici par exemple la procédure pour écarter les séquences d’un des génomes viraux présents dans le jeu de données. Il s’agit de la séquence de Sorex araneus polyomavirus 1 isolate qui est présente dans le fichier /save_projet/metagenomics_training/contaminants/conta.fasta.
Maintenant que les reads sont nettoyés, nous pouvons passer à l’assemblage. Cette étape consiste en la construction de longs contigs à partir des reads.
Pour ce jeu de données nous avons choisi d’effectuer un assemblage poolé de tous nos échantillons. Dans certains cas, il peut être intéressant d’assembler les échantillons séparément. Nous vous proposons aujourd’hui d’utiliser MEGAHIT
SPAdes --meta pour les projets de métagénomiques.
QUAST
Maintenant, on aimerait replacer les reads sur les contigs pour obtenir les informations de couverture et de profondeur.
L’assemblage de shorts reads issus de métagénomes shotguns permet rarement de reconstruire des génomes complets. Cependant le regroupement de contigs par binning permet de regrouper les séquences présentant des propriétés proches et est un bon compromis aux génomes complets. En effet, bien que fragmentés, ces ébauches de génomes sont souvent issues d’organismes proches. L’approche de binning qu’utilise MetaBAT2
Pour l’évaluation des bins, nous utiliserons les deux métriques completeness et contamination estimés par CheckM CheckM nous allons utiliser le workflow checkm2 predict qui est recommandé pour évaluer l’exhaustivité et la contamination des bins de génomes.
Les résultats seront disponibles dans la table CHECKM/quality_report.tsv.
Pour assigner taxonomiquement nos bins, nous allons utiliser GTDB-Tk
A partir de contigs au format FASTA, bakta --metagenome). Il est basé sur une suite d’outils : prodigal
Si toutes les annotations ne sont pas désirées, il est possible de ne pas les faire.
A partir de contigs au format FASTA, prokka --metagenome). Il est basé sur une suite d’outils : prodigal
L’objectif de cette étape est d’annoter fonctionellement les gènes codant pour des protéines, à différente niveau de finesse et avec des ontologies ou des hiérarchies fonctionelles permettant l’aggrégation des annotations sur différents niveaux.
eggnog-mapper
Diamond
---
config:
layout: dagre
---
flowchart TD
%% Configuration des styles généraux
classDef step fill:#f9f9f9,stroke:#333,stroke-width:2px,font-weight:bold;
classDef tool fill:#e1f5fe,stroke:#0288d1,stroke-width:1px,font-style:italic;
classDef file fill:#e8f5e9,stroke:#2e7d32,stroke-width:1px,font-family:monospace;
%% Étape 1: Contrôle Qualité
subgraph ST1 [Contrôle Qualité]
direction TB
sk[seqkit]
fqc[FastQC] --> mqc[MultiQC]
end
class ST1 step; class sk,fqc,mqc tool;
ST1 --> F_CLEANING([TSV / HTML])
class F_CLEANING file;
F_RAW([FASTQ raw]) --> ST1
class F_RAW file;
%% Étape 1.5: Assignation taxonomique
subgraph ST15 [Assignation taxonomique]
direction TB
subgraph STT1 [tools]
direction LR
kj[kaiju] --- kra[kraken]
end
STT1 --> kr[krona]
end
class ST15 step; class kj,kra,kr tool;
F_RAW([FASTQ raw]) --> ST15
ST15 --> F_TAX([TSV / HTML])
class F_TAX file;
%% Étape 3: Nettoyage
subgraph ST3 [Nettoyage]
direction TB
fp[fastp] --> hocort[Hocort]
end
class ST3 step; class fp,smr,hocort,st tool;
F_RAW --> ST3
ST3 --> F_CLEAN([FASTQ cleaned])
class F_CLEAN file;
%% Étape 4: Assemblage
subgraph ST4 [Assemblage]
subgraph ST4t [tools]
direction TB
mh[megahit] --- mspad[metaspades]
end
direction LR
ST4t --> qt[quast]
ST4t --> sk2[seqkit]
end
class ST4 step; class mh,qt,mspad,sk2 tool;
F_CLEAN --> ST4
ST4 --> F_ASM([FASTA Contigs])
class F_ASM file;
%% Étape 5: Mapping
subgraph ST5 [Mapping]
direction TB
mp[bwa] --> smt[samtools]
end
class ST5 step; class mp,smt tool;
F_CLEAN --> ST5
F_ASM --> ST5
ST5 --> F_BAM([BAM])
class F_BAM file;
%% Étape 6: Binning
subgraph ST6 [Binning]
direction LR
mb[metabat2] --> cm[checkm]
end
class ST6 step; class mb,cm tool;
F_ASM --> ST6
F_BAM --> ST6
ST6 --> F_BINS([FASTA MAGs / Bins])
class F_BINS file;
%% Étape 7: Prédiction de gènes
subgraph ST7 [Prédiction de gènes]
direction TB
pk[bakta] --> hts[htseq-count]
end
class ST7 step; class pk,hts tool;
F_ASM --> ST7
ST7 --> F_GENES_FAA([FASTA prot])
ST7 --> F_GENES_GFF([GFF])
ST7 --> F_GENES_TSV([TSV])
class F_GENES_FAA,F_GENES_GFF,F_GENES_TSV file;
%% Étape 8: Annotation fonctionnelle
subgraph ST8 [Annotation fonctionnelle]
direction LR
dm[diamond] --- em[eggnog-mapper]
end
class ST8 step; class dm,em tool;
F_GENES_FAA --> ST8
ST8 --> F_ANNOT([TSV GFF Annotations])
class F_ANNOT file;
F_RAW@{ shape: docs}
F_CLEAN@{ shape: docs}
F_BAM@{ shape: docs}
F_BINS@{ shape: docs}
A work by Migale Bioinformatics Facility
Université Paris-Saclay, INRAE, MaIAGE, 78350, Jouy-en-Josas, France
Université Paris-Saclay, INRAE, BioinfOmics, MIGALE bioinformatics facility, 78350, Jouy-en-Josas, France