Partie 2 : Implémentation pour un seul échantillon¶
Traduction assistée par IA - en savoir plus et suggérer des améliorations
Dans cette partie du cours, nous allons écrire le workflow le plus simple possible qui encapsule toutes les commandes que nous avons exécutées dans la Partie 1 pour automatiser leur exécution, et nous viserons simplement à traiter un échantillon à la fois.
Nous le ferons en trois étapes :
- Écrire un workflow à une seule étape qui exécute l'étape initiale de QC
- Ajouter le nettoyage des adaptateurs et le QC post-nettoyage
- Ajouter l'alignement sur le génome de référence
Prérequis
Vous devez travailler la Partie 1 du cours avant de commencer cette leçon.
Plus précisément, travailler les sections 2.1-3 crée le fichier d'index du génome (data/genome_index.tar.gz) requis pour l'étape d'alignement dans cette leçon.
1. Écrire un workflow à une seule étape qui exécute le QC initial¶
Commençons par écrire un workflow simple qui exécute l'outil FastQC sur un fichier FASTQ contenant des lectures RNAseq single-end.
Nous vous fournissons un fichier de workflow, rnaseq.nf, qui décrit les parties principales du workflow.
| rnaseq.nf | |
|---|---|
Gardez à l'esprit que ce code de workflow est correct mais il n'est pas fonctionnel ; son but est juste de servir de squelette que vous utiliserez pour écrire le workflow réel.
1.1. Créer un répertoire pour stocker les modules¶
Nous allons créer des modules autonomes pour chaque processus afin de faciliter leur gestion et leur réutilisation, créons donc un répertoire pour les stocker.
1.2. Créer un module pour le processus de collecte des métriques QC¶
Créons un fichier de module appelé modules/fastqc.nf pour héberger le processus FASTQC :
Ouvrez le fichier dans l'éditeur de code et copiez-y le code suivant :
Vous devriez reconnaître tous les éléments de ce que vous avez appris dans les Parties 1 et 2 de cette série de formation ; le seul changement notable est que cette fois nous utilisons mode: symlink pour la directive publishDir, et nous utilisons un paramètre pour définir le publishDir.
Note
Même si les fichiers de données que nous utilisons ici sont très petits, en génomique ils peuvent devenir très volumineux. À des fins de démonstration dans l'environnement d'enseignement, nous utilisons le mode de publication 'symlink' pour éviter des copies de fichiers inutiles. Vous ne devriez pas faire cela dans vos workflows finaux, car vous perdrez les résultats lorsque vous nettoierez votre répertoire work.
1.3. Importer le module dans le fichier de workflow¶
Ajoutez l'instruction include { FASTQC } from './modules/fastqc.nf' au fichier rnaseq.nf :
1.4. Ajouter une déclaration d'entrée¶
Déclarez un paramètre d'entrée avec une valeur par défaut :
| rnaseq.nf | |
|---|---|
1.5. Créer un canal d'entrée dans le bloc workflow¶
Utilisez une fabrique de canaux basique .fromPath() pour créer le canal d'entrée :
| rnaseq.nf | |
|---|---|
1.6. Appeler le processus FASTQC sur le canal d'entrée¶
| rnaseq.nf | |
|---|---|
1.7. Exécuter le workflow pour tester qu'il fonctionne¶
Nous pourrions utiliser le paramètre --reads pour spécifier une entrée depuis la ligne de commande, mais pendant le développement nous pouvons être paresseux et simplement utiliser le test par défaut que nous avons configuré.
Sortie de la commande
Cela devrait s'exécuter très rapidement si vous avez travaillé la Partie 1 et avez déjà téléchargé le conteneur. Si vous l'avez sautée, Nextflow téléchargera le conteneur pour vous ; vous n'avez rien à faire pour que cela se produise, mais vous devrez peut-être attendre jusqu'à une minute.
Vous pouvez trouver les sorties sous results/fastqc comme spécifié dans le processus FASTQC par la directive publishDir.
2. Ajouter le nettoyage des adaptateurs et le contrôle qualité post-nettoyage¶
Nous allons utiliser le wrapper Trim_Galore, qui intègre Cutadapt pour le nettoyage lui-même et FastQC pour le contrôle qualité post-nettoyage.
2.1. Créer un module pour le processus de nettoyage et QC¶
Créons un fichier de module appelé modules/trim_galore.nf pour héberger le processus TRIM_GALORE :
Ouvrez le fichier dans l'éditeur de code et copiez-y le code suivant :
2.2. Importer le module dans le fichier de workflow¶
Ajoutez l'instruction include { TRIM_GALORE } from './modules/trim_galore.nf' au fichier rnaseq.nf :
| rnaseq.nf | |
|---|---|
2.3. Appeler le processus sur le canal d'entrée¶
| rnaseq.nf | |
|---|---|
2.4. Exécuter le workflow pour tester qu'il fonctionne¶
Sortie de la commande
Cela devrait également s'exécuter très rapidement, car nous travaillons sur un fichier d'entrée si petit.
Vous pouvez trouver les sorties sous results/trimming comme spécifié dans le processus TRIM_GALORE par la directive publishDir.
ENCSR000COQ1_1.fastq.gz_trimming_report.txt ENCSR000COQ1_1_trimmed_fastqc.zip
ENCSR000COQ1_1_trimmed_fastqc.html ENCSR000COQ1_1_trimmed.fq.gz
3. Aligner les lectures sur le génome de référence¶
Finalement, nous pouvons exécuter l'étape d'alignement du génome en utilisant Hisat2, qui émettra également des métriques de contrôle qualité de type FastQC.
3.1. Créer un module pour le processus HiSat2¶
Créons un fichier de module appelé modules/hisat2_align.nf pour héberger le processus HISAT2_ALIGN :
Ouvrez le fichier dans l'éditeur de code et copiez-y le code suivant :
3.2. Importer le module dans le fichier de workflow¶
Ajoutez l'instruction include { HISAT2_ALIGN } from './modules/hisat2_align.nf' au fichier rnaseq.nf :
| rnaseq.nf | |
|---|---|
3.3. Ajouter une déclaration de paramètre pour fournir l'index du génome¶
Déclarez un paramètre d'entrée avec une valeur par défaut :
| rnaseq.nf | |
|---|---|
3.4. Appeler le processus HISAT2_ALIGN sur les lectures nettoyées produites par TRIM_GALORE¶
Les lectures nettoyées sont dans le canal de sortie TRIM_GALORE.out.trimmed_reads produit par l'étape précédente.
De plus, nous utilisons file (params.hisat2_index_zip) pour fournir à l'outil Hisat2 l'archive tar compressée de l'index du génome.
3.5. Exécuter le workflow pour tester qu'il fonctionne¶
Sortie de la commande
Vous pouvez trouver les sorties sous results/align comme spécifié dans le processus HISAT2_ALIGN par la directive publishDir.
Cela complète le traitement de base que nous devons appliquer à chaque échantillon.
Nous ajouterons l'agrégation de rapports MultiQC dans la Partie 2, après avoir fait en sorte que le workflow accepte plusieurs échantillons à la fois.
À retenir¶
Vous savez comment encapsuler toutes les étapes principales pour traiter des échantillons RNAseq single-end individuellement.
Et ensuite ?¶
Apprenez comment modifier le workflow pour traiter plusieurs échantillons en parallèle, agréger les rapports QC sur toutes les étapes pour tous les échantillons, et permettre l'exécution du workflow sur des données RNAseq paired-end.