Parte 2: Implementazione per singolo campione¶
Traduzione assistita da IA - scopri di più e suggerisci miglioramenti
In questa parte del corso, scriveremo il workflow più semplice possibile che racchiude tutti i comandi eseguiti nella Parte 1 per automatizzarne l'esecuzione, e ci limiteremo a processare un campione alla volta.
Lo faremo in tre fasi:
- Scrivere un workflow a singolo stadio che esegue il passaggio iniziale di QC
- Aggiungere il trimming degli adapter e il QC post-trimming
- Aggiungere l'allineamento al genoma di riferimento
Prerequisito
È necessario completare la Parte 1 del corso prima di iniziare questa lezione.
Nello specifico, il completamento delle sezioni 2.1-3 crea il file di indice del genoma (data/genome_index.tar.gz) richiesto per il passaggio di allineamento in questa lezione.
1. Scrivere un workflow a singolo stadio che esegue il QC iniziale¶
Iniziamo scrivendo un semplice workflow che esegue lo strumento FastQC su un file FASTQ contenente letture RNAseq single-end.
Forniamo un file di workflow, rnaseq.nf, che delinea le parti principali del workflow.
| rnaseq.nf | |
|---|---|
Tenere presente che questo codice del workflow è corretto ma non è funzionale; il suo scopo è solo quello di servire come scheletro da utilizzare per scrivere il workflow effettivo.
1.1. Creare una directory per memorizzare i moduli¶
Creeremo moduli standalone per ciascun processo per facilitarne la gestione e il riutilizzo, quindi creiamo una directory per memorizzarli.
1.2. Creare un modulo per il processo di raccolta delle metriche QC¶
Creiamo un file modulo chiamato modules/fastqc.nf per contenere il processo FASTQC:
Aprire il file nell'editor di codice e copiarvi il seguente codice:
Dovrebbe riconoscere tutti gli elementi da quanto appreso nella Parte 1 e nella Parte 2 di questa serie di formazione; l'unica modifica degna di nota è che questa volta stiamo usando mode: symlink per la direttiva publishDir, e stiamo usando un parametro per definire la publishDir.
Nota
Anche se i file di dati che stiamo utilizzando qui sono molto piccoli, in genomica possono diventare molto grandi. Ai fini della dimostrazione nell'ambiente di formazione, stiamo usando la modalità di pubblicazione 'symlink' per evitare copie di file non necessarie. Non dovrebbe farlo nei workflow finali, poiché perderà i risultati quando pulisce la directory work.
1.3. Importare il modulo nel file del workflow¶
Aggiungere l'istruzione include { FASTQC } from './modules/fastqc.nf' al file rnaseq.nf:
1.4. Aggiungere una dichiarazione di input¶
Dichiarare un parametro di input con un valore predefinito:
1.5. Creare un canale di input nel blocco workflow¶
Utilizzare un factory di canale .fromPath() di base per creare il canale di input:
| rnaseq.nf | |
|---|---|
1.6. Chiamare il processo FASTQC sul canale di input¶
| rnaseq.nf | |
|---|---|
1.7. Eseguire il workflow per verificare che funzioni¶
Potremmo usare il parametro --reads per specificare un input dalla riga di comando, ma durante lo sviluppo possiamo essere pigri e semplicemente usare il test predefinito che abbiamo configurato.
Output del comando
Questo dovrebbe essere eseguito molto rapidamente se avete completato la Parte 1 e ha già scaricato il container. Se lo avete saltato, Nextflow scaricherà il container per voi; non deve fare nulla perché accada, ma potrebbe dover attendere fino a un minuto.
Può trovare gli output in results/fastqc come specificato nel processo FASTQC dalla direttiva publishDir.
2. Aggiungere il trimming degli adapter e il controllo di qualità post-trimming¶
Utilizzeremo il wrapper Trim_Galore, che raggruppa Cutadapt per il trimming stesso e FastQC per il controllo di qualità post-trimming.
2.1. Creare un modulo per il processo di trimming e QC¶
Creiamo un file modulo chiamato modules/trim_galore.nf per contenere il processo TRIM_GALORE:
Aprire il file nell'editor di codice e copiarvi il seguente codice:
2.2. Importare il modulo nel file del workflow¶
Aggiungere l'istruzione include { TRIM_GALORE } from './modules/trim_galore.nf' al file rnaseq.nf:
| rnaseq.nf | |
|---|---|
2.3. Chiamare il processo sul canale di input¶
| rnaseq.nf | |
|---|---|
2.4. Eseguire il workflow per verificare che funzioni¶
Output del comando
Anche questo dovrebbe essere eseguito molto rapidamente, dato che stiamo lavorando su un file di input così piccolo.
Può trovare gli output in results/trimming come specificato nel processo TRIM_GALORE dalla direttiva publishDir.
ENCSR000COQ1_1.fastq.gz_trimming_report.txt ENCSR000COQ1_1_trimmed_fastqc.zip
ENCSR000COQ1_1_trimmed_fastqc.html ENCSR000COQ1_1_trimmed.fq.gz
3. Allineare le letture al genoma di riferimento¶
Infine possiamo eseguire il passaggio di allineamento del genoma utilizzando Hisat2, che emetterà anche metriche di controllo della qualità in stile FastQC.
3.1. Creare un modulo per il processo HiSat2¶
Creiamo un file modulo chiamato modules/hisat2_align.nf per contenere il processo HISAT2_ALIGN:
Aprire il file nell'editor di codice e copiarvi il seguente codice:
3.2. Importare il modulo nel file del workflow¶
Aggiungere l'istruzione include { HISAT2_ALIGN } from './modules/hisat2_align.nf' al file rnaseq.nf:
| rnaseq.nf | |
|---|---|
3.3. Aggiungere una dichiarazione di parametro per fornire l'indice del genoma¶
Dichiarare un parametro di input con un valore predefinito:
| rnaseq.nf | |
|---|---|
3.4. Chiamare il processo HISAT2_ALIGN sulle letture trimmate prodotte da TRIM_GALORE¶
Le letture trimmate si trovano nel canale TRIM_GALORE.out.trimmed_reads prodotto dal passaggio precedente.
Inoltre, utilizziamo file (params.hisat2_index_zip) per fornire allo strumento Hisat2 il tarball compresso dell'indice del genoma.
3.5. Eseguire il workflow per verificare che funzioni¶
Output del comando
Può trovare gli output in results/align come specificato nel processo HISAT2_ALIGN dalla direttiva publishDir.
Questo completa l'elaborazione di base che dobbiamo applicare a ciascun campione.
Aggiungeremo l'aggregazione dei report MultiQC nella Parte 2, dopo aver modificato il workflow per accettare più campioni contemporaneamente.
Takeaway¶
Sa come racchiudere tutti i passaggi principali per processare campioni RNAseq single-end individualmente.
Qual è il prossimo passo?¶
Imparate come modificare il workflow per processare più campioni in parallelo, aggregare i report QC attraverso tutti i passaggi per tutti i campioni e abilitare l'esecuzione del workflow su dati RNAseq paired-end.