Część 2: Implementacja dla pojedynczej próbki¶
Tłumaczenie wspomagane przez AI - dowiedz się więcej i zasugeruj ulepszenia
W tej części kursu napiszemy najprostszy możliwy workflow, który obejmie wszystkie polecenia uruchomione w Części 1, aby zautomatyzować ich wykonywanie, i będziemy dążyć do przetwarzania jednej próbki na raz.
Zrobimy to w trzech etapach:
- Napisanie jednoetapowego workflow, który uruchamia początkowy krok kontroli jakości
- Dodanie przycinania adapterów i kontroli jakości po przycięciu
- Dodanie dopasowania do genomu referencyjnego
Wymaganie wstępne
Musisz przejść przez Część 1 kursu przed rozpoczęciem tej lekcji.
W szczególności, praca przez sekcje 2.1-3 tworzy plik indeksu genomu (data/genome_index.tar.gz) wymagany do kroku dopasowania w tej lekcji.
1. Napisanie jednoetapowego workflow, który uruchamia początkową kontrolę jakości¶
Zacznijmy od napisania prostego workflow, który uruchamia narzędzie FastQC na pliku FASTQ zawierającym odczyty RNAseq pojedynczego końca.
Udostępniamy plik workflow, rnaseq.nf, który określa główne części workflow.
| rnaseq.nf | |
|---|---|
Pamiętaj, że ten kod workflow'u jest poprawny, ale nie jest funkcjonalny; jego celem jest jedynie służenie jako szkielet, którego użyjesz do napisania rzeczywistego workflow'u.
1.1. Utworzenie katalogu do przechowywania modułów¶
Utworzymy samodzielne moduły dla każdego procesu. Ułatwi to zarządzanie i ponowne wykorzystanie, więc stwórzmy katalog do przechowywania modułów.
1.2. Utworzenie modułu dla procesu zbierania metryk kontroli jakości¶
Utwórzmy plik modułu o nazwie modules/fastqc.nf do przechowywania procesu FASTQC:
Otwórz plik w edytorze kodu i skopiuj do niego następujący kod:
Powinieneś rozpoznać wszystkie elementy z tego, czego nauczyłeś się w Części 1 i Części 2 tej serii szkoleń; jedyną godną uwagi zmianą jest to, że tym razem używamy mode: symlink dla dyrektywy publishDir i używamy parametru do zdefiniowania publishDir.
Uwaga
Mimo że pliki danych, których tutaj używamy, są bardzo małe, w genomice mogą być bardzo duże. W celach demonstracyjnych w środowisku szkoleniowym używamy trybu publikowania 'symlink', aby uniknąć niepotrzebnych kopii plików. Nie powinieneś tego robić w Swoich finalnych workflow'ach, ponieważ stracisz wyniki podczas czyszczenia katalogu work.
1.3. Importowanie modułu do pliku workflow¶
Dodaj instrukcję include { FASTQC } from './modules/fastqc.nf' do pliku rnaseq.nf:
1.4. Dodanie deklaracji danych wejściowych¶
Zadeklaruj parametr wejściowy z wartością domyślną:
1.5. Utworzenie kanału wejściowego w bloku workflow¶
Użyj podstawowej fabryki kanałów .fromPath(), aby utworzyć kanał wejściowy:
| rnaseq.nf | |
|---|---|
1.6. Wywołanie procesu FASTQC na kanale wejściowym¶
| rnaseq.nf | |
|---|---|
1.7. Uruchomienie workflow'u w celu przetestowania, czy działa¶
Moglibyśmy użyć parametru --reads, aby określić wejście z linii poleceń, ale podczas programowania możemy być leniwi i po prostu użyć domyślnej wartości testowej, którą ustawiliśmy.
Wyjście polecenia
Powinno to działać bardzo szybko, jeśli pracowałeś przez Część 1 i już pobrałeś kontener. Jeśli ją pominąłeś, Nextflow pobierze kontener za Ciebie; nie musisz nic robić, aby to się stało, ale możesz potrzebować poczekać do minuty.
Możesz znaleźć wyniki w results/fastqc, jak określono w procesie FASTQC przez dyrektywę publishDir.
2. Dodanie przycinania adapterów i kontroli jakości po przycięciu¶
Zamierzamy użyć wrappera Trim_Galore, który łączy Cutadapt do samego przycinania i FastQC do kontroli jakości po przycięciu.
2.1. Utworzenie modułu dla procesu przycinania i kontroli jakości¶
Utwórzmy plik modułu o nazwie modules/trim_galore.nf do przechowywania procesu TRIM_GALORE:
Otwórz plik w edytorze kodu i skopiuj do niego następujący kod:
2.2. Importowanie modułu do pliku workflow¶
Dodaj instrukcję include { TRIM_GALORE } from './modules/trim_galore.nf' do pliku rnaseq.nf:
| rnaseq.nf | |
|---|---|
2.3. Wywołanie procesu na kanale wejściowym¶
| rnaseq.nf | |
|---|---|
2.4. Uruchomienie workflow'u w celu przetestowania, czy działa¶
Wyjście polecenia
To również powinno działać bardzo szybko, ponieważ uruchamiamy na tak małym pliku wejściowym.
Możesz znaleźć wyniki w results/trimming, jak określono w procesie TRIM_GALORE przez dyrektywę publishDir.
ENCSR000COQ1_1.fastq.gz_trimming_report.txt ENCSR000COQ1_1_trimmed_fastqc.zip
ENCSR000COQ1_1_trimmed_fastqc.html ENCSR000COQ1_1_trimmed.fq.gz
3. Dopasowanie odczytów do genomu referencyjnego¶
Na koniec możemy uruchomić krok dopasowania genomu przy użyciu Hisat2, który również wyemituje metryki kontroli jakości w stylu FastQC.
3.1. Utworzenie modułu dla procesu HiSat2¶
Utwórzmy plik modułu o nazwie modules/hisat2_align.nf do przechowywania procesu HISAT2_ALIGN:
Otwórz plik w edytorze kodu i skopiuj do niego następujący kod:
3.2. Importowanie modułu do pliku workflow¶
Dodaj instrukcję include { HISAT2_ALIGN } from './modules/hisat2_align.nf' do pliku rnaseq.nf:
| rnaseq.nf | |
|---|---|
3.3. Dodanie deklaracji parametru do dostarczenia indeksu genomu¶
Zadeklaruj parametr wejściowy z wartością domyślną:
| rnaseq.nf | |
|---|---|
3.4. Wywołanie procesu HISAT2_ALIGN na przyciętych odczytach wyjściowych z TRIM_GALORE¶
Przycięte odczyty znajdują się w kanale TRIM_GALORE.out.trimmed_reads wyjściowym z poprzedniego kroku.
Dodatkowo używamy file (params.hisat2_index_zip), aby dostarczyć narzędziu Hisat2 spakowany archiwum tar indeksu genomu.
3.5. Uruchomienie workflow'u w celu przetestowania, czy działa¶
Wyjście polecenia
Możesz znaleźć wyniki w results/align, jak określono w procesie HISAT2_ALIGN przez dyrektywę publishDir.
To kończy podstawowe przetwarzanie, które musimy zastosować do każdej próbki.
Dodamy agregację raportów MultiQC w Części 2, po tym, jak sprawimy, że workflow będzie akceptować wiele próbek naraz.
Podsumowanie¶
Wiesz, jak opakować wszystkie podstawowe kroki do przetwarzania próbek RNAseq single-end indywidualnie.
Co dalej?¶
Dowiedz się, jak zmodyfikować workflow, aby przetwarzać wiele próbek równolegle, agregować raporty kontroli jakości we wszystkich krokach dla wszystkich próbek i umożliwić uruchamianie workflow'u na danych RNAseq paired-end.