Bölüm 2: Tek örnekli uygulama¶
Yapay zeka destekli çeviri - daha fazla bilgi ve iyileştirme önerileri
Bu kursun bu bölümünde, Bölüm 1'de çalıştırdığımız tüm komutları otomatikleştirmek için mümkün olan en basit iş akışını yazacağız ve her seferinde yalnızca bir örneği işlemeyi hedefleyeceğiz.
Ön Koşul
Bu derse başlamadan önce Bölüm 1: Yönteme genel bakış bölümünü tamamlamış olmanız gerekir.
Özellikle, 1.2.3 bölümünde çalışmak, bu dersteki hizalama adımı için gerekli olan genom dizin dosyasını (data/genome_index.tar.gz) oluşturur.
Görev¶
Bu kursun bu bölümünde, aşağıdakileri yapan bir iş akışı geliştireceğiz:
- Girdi okumaları üzerinde kalite kontrolü çalıştırın (FastQC)
- Adaptörleri kırpın ve kırpma sonrası kalite kontrolü çalıştırın (Trim Galore)
- Kırpılmış okumaları bir referans genoma hizalayın (HISAT2)
Bu, Bölüm 1: Yönteme genel bakış bölümünün ilk kısmındaki adımları otomatikleştirir; burada bu komutları konteynırlarında manuel olarak çalıştırmıştınız.
Başlangıç noktası olarak, size iş akışının ana bölümlerini özetleyen bir iş akışı dosyası olan rnaseq.nf ve modules/ dizininde her sürecin yapısını özetleyen dört modül dosyası (fastqc.nf, trim_galore.nf, hisat2_align.nf ve multiqc.nf) sağlıyoruz.
İskelet dosyaları
#!/usr/bin/env nextflow
// Modül INCLUDE ifadeleri
/*
* Pipeline parametreleri
*/
// Birincil girdi
workflow {
main:
// Girdi kanalı oluştur
// Süreçleri çağır
publish:
// Yayınlanacak çıktıları bildir
}
output {
// Yayınlama hedeflerini yapılandır
}
#!/usr/bin/env nextflow
/*
* Girdi okumaları üzerinde FastQC çalıştır
*/
process FASTQC {
container
input:
output:
script:
"""
"""
}
#!/usr/bin/env nextflow
/*
* Adaptörleri kırp ve kırpma sonrası kalite kontrolü çalıştır
*/
process TRIM_GALORE {
container
input:
output:
script:
"""
"""
}
Bu dosyalar işlevsel değildir; amaçları yalnızca kodun ilginç kısımlarını doldurmanız için iskelet görevi görmektir.
Ders planı¶
Geliştirme sürecini daha eğitici hale getirmek için bunu üç aşamaya ayırdık:
- İlk kalite kontrol adımını çalıştıran tek aşamalı bir iş akışı yazın. Bu, bir CLI parametresi kurma, bir girdi kanalı oluşturma, bir süreç modülü yazma ve çıktı yayınlamayı yapılandırmayı kapsar.
- Adaptör kırpma ve kırpma sonrası kalite kontrolü ekleyin. Bu, bir sürecin çıktısını diğerinin girdisine bağlayarak süreçleri zincirlemeyi tanıtır.
- Referans genoma hizalama ekleyin. Bu, ek referans girdilerini işlemeyi ve sıkıştırılmış arşivlerle çalışmayı kapsar.
Her adım, iş akışı geliştirmenin belirli bir yönüne odaklanır.
İpucu
Doğru çalışma dizininde olduğunuzdan emin olun:
cd /workspaces/training/nf4-science/rnaseq
1. İlk kalite kontrolünü çalıştıran tek aşamalı bir iş akışı yazın¶
Bu ilk adım temellere odaklanır: bir FASTQ dosyası yükleme ve üzerinde kalite kontrolü çalıştırma.
Bölüm 1'deki fastqc komutunu hatırlayın:
Komut, girdi olarak bir FASTQ dosyası alır ve bir .zip arşivi ve bir .html özeti olarak bir kalite kontrol raporu üretir.
Konteyner URI'si community.wave.seqera.io/library/trim-galore:0.6.10--1bf8ca4e1967cd18 idi.
Bu bilgiyi alacağız ve üç aşamada Nextflow'a saracağız:
- Girdiyi ayarlayın
- Kalite kontrol sürecini yazın ve iş akışında çağırın
- Çıktı işlemeyi yapılandırın
1.1. Girdiyi ayarlayın¶
Bir girdi parametresi bildirmemiz, uygun bir varsayılan değer sağlamak için bir test profili oluşturmamız ve bir girdi kanalı oluşturmamız gerekiyor.
1.1.1. Bir girdi parametresi bildirimi ekleyin¶
rnaseq.nf dosyasında, Pipeline parametreleri bölümü altında, Path türünde input adlı bir parametre bildirin.
Bu, CLI parametresini ayarlar, ancak geliştirme sırasında iş akışını her çalıştırdığımızda dosya yolunu yazmak istemiyoruz. Varsayılan bir değer sağlamak için birden fazla seçenek vardır; burada bir test profili kullanıyoruz.
1.1.2. nextflow.config dosyasında varsayılan değere sahip bir test profili oluşturun¶
Bir test profili, komut satırında girdi belirtmeden bir iş akışını denemek için uygun varsayılan değerler sağlar. Bu, Nextflow ekosisteminde yaygın bir kuraldır (daha fazla ayrıntı için Hello Config bölümüne bakın).
nextflow.config dosyasına, input parametresini test FASTQ dosyalarından birine ayarlayan bir test profili içeren bir profiles bloğu ekleyin.
Burada, iş akışı betiğinin bulunduğu dizine işaret eden yerleşik bir Nextflow değişkeni olan ${projectDir} kullanıyoruz.
Bu, mutlak yolları sabit kodlamadan veri dosyalarına ve diğer kaynaklara başvurmayı kolaylaştırır.
Parametre artık uygun bir varsayılana sahip. Ardından, ondan bir kanal oluşturmamız gerekiyor.
1.1.3. Girdi kanalını ayarlayın¶
İş akışı bloğunda, .fromPath kanal fabrikasını kullanarak parametre değerinden bir girdi kanalı oluşturun (Hello Channels bölümünde kullanıldığı gibi).
Ardından, bu girdi üzerinde kalite kontrolü çalıştırmak için süreci oluşturmamız gerekecek.
1.2. Kalite kontrol sürecini yazın ve iş akışında çağırın¶
Modül dosyasındaki süreç tanımını doldurmamız, bir include ifadesi kullanarak iş akışına aktarmamız ve girdi üzerinde çağırmamız gerekiyor.
1.2.1. Kalite kontrol süreci için modülü doldurun¶
modules/fastqc.nf dosyasını açın ve süreç tanımının ana hatlarını inceleyin.
Ana yapısal öğeleri tanıyor olmalısınız; değilse, bir tazeleme için Hello Nextflow bölümünü okumayı düşünün.
Devam edin ve yukarıda sağlanan bilgileri kullanarak süreç tanımını kendiniz doldurun, ardından çalışmanızı aşağıdaki "Sonra" sekmesindeki çözümle karşılaştırın.
simpleName erişimcisi, dosya adından tüm uzantıları çıkarır, böylece ENCSR000COQ1_1.fastq.gz, ENCSR000COQ1_1 olur.
Her çıktı kanalına isim atamak için emit: sözdizimini kullanıyoruz; bu, çıktıları publish bloğuna bağlamak için yararlı olacaktır.
Bunu tamamladığınızda, süreç tamamlanmış olur. İş akışında kullanmak için modülü içe aktarmanız ve bir süreç çağrısı eklemeniz gerekir.
1.2.2. Modülü dahil edin¶
rnaseq.nf dosyasında, süreci iş akışı için kullanılabilir hale getirmek için bir include ifadesi ekleyin:
Süreç artık iş akışı kapsamında kullanılabilir.
1.2.3. Girdi üzerinde kalite kontrol sürecini çağırın¶
İş akışı bloğuna, girdi kanalını argüman olarak ileten bir FASTQC çağrısı ekleyin.
İş akışı artık girdiyi yükler ve üzerinde kalite kontrol sürecini çalıştırır. Ardından, çıktının nasıl yayınlanacağını yapılandırmamız gerekiyor.
1.3. Çıktı işlemeyi yapılandırın¶
Hangi süreç çıktılarının yayınlanacağını bildirmemiz ve nereye gitmesi gerektiğini belirtmemiz gerekiyor.
1.3.1. publish: bölümünde çıktıları bildirin¶
İş akışı bloğu içindeki publish: bölümü, hangi süreç çıktılarının yayınlanması gerektiğini bildirir.
FASTQC çıktılarını adlandırılmış hedeflere atayın.
Ardından, Nextflow'a yayınlanan çıktıları nereye koyacağını söylememiz gerekecek.
1.3.2. output {} bloğunda çıktı hedeflerini yapılandırın¶
output {} bloğu iş akışının dışında yer alır ve her adlandırılmış hedefin nerede yayınlandığını belirtir.
Her iki hedefi de bir fastqc/ alt dizinine yayınlayacak şekilde yapılandırın.
Not
Varsayılan olarak, Nextflow çıktı dosyalarını sembolik bağlantılar olarak yayınlar; bu, gereksiz çoğaltmayı önler.
Burada kullandığımız veri dosyaları çok küçük olsa da, genomik alanında çok büyük olabilirler.
Sembolik bağlantılar, work dizininizi temizlediğinizde bozulur, bu nedenle üretim iş akışları için varsayılan yayınlama modunu 'copy' olarak geçersiz kılmak isteyebilirsiniz.
1.4. İş akışını çalıştırın¶
Bu noktada, tamamen işlevsel olması gereken tek adımlı bir kalite kontrol iş akışımız var.
Test profilinde ayarlanan varsayılan değeri kullanmak için -profile test ile çalıştırıyoruz; bu, komut satırına yolu yazma ihtiyacını ortadan kaldırır.
Komut çıktısı
Bölüm 1'de çalıştıysanız ve konteynırı zaten çektiyseniz bu çok hızlı çalışmalıdır. Eğer atladıysanız, Nextflow konteynırı sizin için çekecektir; bunun gerçekleşmesi için herhangi bir şey yapmanıza gerek yok, ancak bir dakikaya kadar beklemeniz gerekebilir.
Çıktıları sonuçlar dizininde kontrol edebilirsiniz.
Örnek için kalite kontrol raporları artık fastqc/ alt dizininde yayınlanmıştır.
Özet¶
Bir süreç içeren bir modül oluşturmayı, onu bir iş akışına aktarmayı, bir girdi kanalıyla çağırmayı ve iş akışı düzeyinde çıktı bloğunu kullanarak sonuçları yayınlamayı biliyorsunuz.
Sırada ne var?¶
İş akışında ikinci bir adım olarak kırpma sonrası kalite kontrolü ile adaptör kırpma ekleyin.
2. Adaptör kırpma ve kırpma sonrası kalite kontrolü ekleyin¶
Artık ilk kalite kontrolü yerinde olduğuna göre, yerleşik kırpma sonrası kalite kontrolü ile adaptör kırpma adımını ekleyebiliriz.
Bölüm 1'deki trim_galore komutunu hatırlayın:
Komut, bir FASTQ dosyasından adaptörleri kırpar ve kırpılmış çıktı üzerinde FastQC çalıştırır.
Kırpılmış okumalar, bir kırpma raporu ve kırpılmış okumalar için FastQC raporları üretir.
Konteyner URI'si community.wave.seqera.io/library/trim-galore:0.6.10--1bf8ca4e1967cd18 idi.
Sadece süreç tanımını yazmamız, içe aktarmamız, iş akışında çağırmamız ve çıktı işlemeyi güncellememiz gerekiyor.
2.1. Kırpma sürecini yazın ve iş akışında çağırın¶
Daha önce olduğu gibi, süreç tanımını doldurmamız, modülü içe aktarmamız ve süreç çağrısını eklememiz gerekiyor.
2.1.1. Kırpma süreci için modülü doldurun¶
modules/trim_galore.nf dosyasını açın ve süreç tanımının ana hatlarını inceleyin.
Devam edin ve yukarıda sağlanan bilgileri kullanarak süreç tanımını kendiniz doldurun, ardından çalışmanızı aşağıdaki "Sonra" sekmesindeki çözümle karşılaştırın.
Bu sürecin üç adlandırılmış çıktısı vardır: hizalama adımına beslenen kırpılmış okumalar, kırpma raporu ve kırpma sonrası FastQC raporları.
--fastqc bayrağı, Trim Galore'a kırpılmış çıktı üzerinde otomatik olarak FastQC çalıştırmasını söyler.
2.1.2. Modülü dahil edin¶
Yeni modülü içe aktarmak için rnaseq.nf dosyasını güncelleyin:
Ardından, iş akışına süreç çağrısını ekleyeceğiz.
2.1.3. Girdi üzerinde kırpma sürecini çağırın¶
İş akışı bloğuna süreç çağrısını ekleyin:
| rnaseq.nf | |
|---|---|
Kırpma süreci artık iş akışına bağlanmıştır.
2.2. Çıktı işlemeyi güncelleyin¶
Kırpma çıktılarını yayınlama bildirimine eklememiz ve nereye gideceklerini yapılandırmamız gerekiyor.
2.2.1. Kırpma çıktıları için yayınlama hedefleri ekleyin¶
Kırpma çıktılarını publish: bölümüne ekleyin:
Ardından, Nextflow'a bu çıktıları nereye koyacağını söylememiz gerekecek.
2.2.2. Yeni çıktı hedeflerini yapılandırın¶
output {} bloğunda kırpma hedefleri için girdiler ekleyin ve bunları bir trimming/ alt dizinine yayınlayın:
Çıktı yapılandırması tamamlandı.
2.3. İş akışını çalıştırın¶
İş akışı artık hem ilk kalite kontrolünü hem de adaptör kırpmayı içeriyor.
Komut çıktısı
Bu da çok hızlı çalışmalıdır, çünkü çok küçük bir girdi dosyası üzerinde çalışıyoruz.
Kırpma çıktılarını sonuçlar dizininde bulabilirsiniz.
ENCSR000COQ1_1.fastq.gz_trimming_report.txt ENCSR000COQ1_1_trimmed_fastqc.zip
ENCSR000COQ1_1_trimmed_fastqc.html ENCSR000COQ1_1_trimmed.fq.gz
Kırpma çıktıları ve kırpma sonrası kalite kontrol raporları artık trimming/ alt dizinindedir.
Özet¶
Aynı girdi üzerinde bağımsız olarak çalışan ve birden fazla adlandırılmış çıktı üreten ikinci bir işleme adımını nasıl ekleyeceğinizi biliyorsunuz.
Sırada ne var?¶
Kırpılmış okumalar çıktısından zincirlenen hizalama adımını ekleyin.
3. Referans genoma hizalama ekleyin¶
Son olarak HISAT2 kullanarak genom hizalama adımını ekleyebiliriz.
Bölüm 1'deki hizalama komutunu hatırlayın:
hisat2 -x <genome_index> -U <reads> \
--new-summary --summary-file <reads>.hisat2.log | \
samtools view -bS -o <reads>.bam
Komut, okumaları bir referans genoma hizalar ve çıktıyı BAM formatına dönüştürür.
Önceden oluşturulmuş bir genom dizin arşivi gerektirir ve bir BAM dosyası ve bir hizalama özet günlüğü üretir.
Konteyner URI'si community.wave.seqera.io/library/hisat2_samtools:5e49f68a37dc010e idi.
Bu süreç ek bir girdi (genom dizin arşivi) gerektirir, bu yüzden önce onu ayarlamamız, ardından süreci yazmamız ve bağlamamız gerekiyor.
3.1. Girdileri ayarlayın¶
Genom dizin arşivi için bir parametre bildirmemiz gerekiyor.
3.1.1. Genom dizini için bir parametre ekleyin¶
rnaseq.nf dosyasına genom dizin arşivi için bir parametre bildirimi ekleyin:
3.1.2. Test profiline genom dizini varsayılanını ekleyin¶
Bölüm 1.1.2'de input için yaptığımız gibi, nextflow.config dosyasındaki test profiline genom dizini için bir varsayılan değer ekleyin:
Parametre hazır; şimdi hizalama sürecini oluşturabiliriz.
3.2. Hizalama sürecini yazın ve iş akışında çağırın¶
Daha önce olduğu gibi, süreç tanımını doldurmamız, modülü içe aktarmamız ve süreç çağrısını eklememiz gerekiyor.
3.2.1. Hizalama süreci için modülü doldurun¶
modules/hisat2_align.nf dosyasını açın ve süreç tanımının ana hatlarını inceleyin.
Devam edin ve yukarıda sağlanan bilgileri kullanarak süreç tanımını kendiniz doldurun, ardından çalışmanızı aşağıdaki "Sonra" sekmesindeki çözümle karşılaştırın.
Bu süreç iki girdi alır: okumalar ve genom dizin arşivi.
Betik bloğu önce dizini arşivden çıkarır, ardından çıktıyı BAM formatına dönüştürmek için samtools view'a yönlendirilen HISAT2 hizalamasını çalıştırır.
index_zip üzerindeki simpleName erişimcisi, dizin öneki olarak kullanılacak arşivin temel adını (genome_index) çıkarır.
3.2.2. Modülü dahil edin¶
Yeni modülü içe aktarmak için rnaseq.nf dosyasını güncelleyin:
Ardından, iş akışına süreç çağrısını ekleyeceğiz.
3.2.3. Hizalama sürecini çağırın¶
Kırpılmış okumalar, önceki adım tarafından çıktılanan TRIM_GALORE.out.trimmed_reads kanalındadır.
Genom dizin arşivini sağlamak için file(params.hisat2_index_zip) kullanıyoruz.
Hizalama süreci artık iş akışına bağlanmıştır.
3.3. Çıktı işlemeyi güncelleyin¶
Hizalama çıktılarını yayınlama bildirimine eklememiz ve nereye gideceklerini yapılandırmamız gerekiyor.
3.3.1. Hizalama çıktıları için yayınlama hedefleri ekleyin¶
Hizalama çıktılarını publish: bölümüne ekleyin:
| rnaseq.nf | |
|---|---|
Ardından, Nextflow'a bu çıktıları nereye koyacağını söylememiz gerekecek.
3.3.2. Yeni çıktı hedeflerini yapılandırın¶
output {} bloğunda hizalama hedefleri için girdiler ekleyin ve bunları bir align/ alt dizinine yayınlayın:
| rnaseq.nf | |
|---|---|
Çıktı yapılandırması tamamlandı.
3.4. İş akışını çalıştırın¶
İş akışı artık üç işleme adımını da içeriyor: kalite kontrolü, kırpma ve hizalama.
Komut çıktısı
Hizalama çıktılarını sonuçlar dizininde bulabilirsiniz.
Bu, her örneğe uygulamamız gereken temel işlemi tamamlar.
İş akışını aynı anda birden fazla örneği kabul edecek şekilde değiştirdikten sonra, Bölüm 3'te MultiQC rapor toplama işlemini ekleyeceğiz.
Özet¶
Tek uçlu RNAseq örneklerini ayrı ayrı işlemek için tüm temel adımları nasıl saracağınızı biliyorsunuz.
Sırada ne var?¶
Bir mola verin! Bu çok şeydi.
Kendinizi tazelenmiş hissettiğinizde, Bölüm 3'e geçin; burada iş akışını birden fazla örneği paralel olarak işleyecek şekilde nasıl değiştireceğinizi, tüm örnekler için tüm adımlarda kalite kontrol raporlarını nasıl toplayacağınızı ve iş akışının çift uçlu RNAseq verileri üzerinde çalışmasını nasıl etkinleştireceğinizi öğreneceksiniz.