भाग 2: एकल-नमूना कार्यान्वयन¶
AI-सहायता प्राप्त अनुवाद - अधिक जानें और सुधार सुझाएं
कोर्स के इस भाग में, हम सबसे सरल संभव workflow लिखने जा रहे हैं जो भाग 1 में चलाए गए सभी commands को wrap करता है ताकि उन्हें चलाना automate हो सके, और हम एक बार में सिर्फ एक नमूना प्रोसेस करने का लक्ष्य रखेंगे।
हम यह तीन चरणों में करेंगे:
- एक single-stage workflow लिखें जो शुरुआती QC step चलाता है
- Adapter trimming और post-trimming QC जोड़ें
- Reference genome के लिए alignment जोड़ें
पूर्वापेक्षा
इस पाठ को शुरू करने से पहले आपको कोर्स के भाग 1 को पूरा करना होगा।
विशेष रूप से, sections 2.1-3 पर काम करने से genome index फ़ाइल (data/genome_index.tar.gz) बनती है जो इस पाठ में alignment step के लिए आवश्यक है।
1. एक single-stage workflow लिखें जो शुरुआती QC चलाता है¶
आइए एक सरल workflow लिखकर शुरू करें जो single-end RNAseq reads वाली FASTQ फ़ाइल पर FastQC tool चलाता है।
हम आपको एक workflow फ़ाइल, rnaseq.nf, प्रदान करते हैं, जो workflow के मुख्य भागों की रूपरेखा देती है।
| rnaseq.nf | |
|---|---|
ध्यान रखें यह workflow code सही है लेकिन यह functional नहीं है; इसका उद्देश्य सिर्फ एक skeleton के रूप में काम करना है जिसका उपयोग आप वास्तविक workflow लिखने के लिए करेंगे।
1.1. Modules स्टोर करने के लिए एक डायरेक्टरी बनाएं¶
हम प्रत्येक process के लिए standalone modules बनाएंगे ताकि उन्हें manage करना और reuse करना आसान हो, तो चलिए उन्हें स्टोर करने के लिए एक डायरेक्टरी बनाते हैं।
1.2. QC metrics collection process के लिए एक मॉड्यूल बनाएं¶
आइए FASTQC process को रखने के लिए modules/fastqc.nf नाम की एक मॉड्यूल फ़ाइल बनाएं:
फ़ाइल को code editor में खोलें और निम्नलिखित code को इसमें कॉपी करें:
आपको इस training series के भाग 1 और भाग 2 में जो सीखा है उससे सभी टुकड़े पहचानने चाहिए; एकमात्र उल्लेखनीय बदलाव यह है कि इस बार हम publishDir directive के लिए mode: symlink का उपयोग कर रहे हैं, और हम publishDir को define करने के लिए एक पैरामीटर का उपयोग कर रहे हैं।
Note
भले ही हम यहां जो data फ़ाइलें उपयोग कर रहे हैं वे बहुत छोटी हैं, genomics में वे बहुत बड़ी हो सकती हैं। teaching वातावरण में प्रदर्शन के उद्देश्य से, हम अनावश्यक फ़ाइल copies से बचने के लिए 'symlink' publishing mode का उपयोग कर रहे हैं। आपको अपने final workflows में ऐसा नहीं करना चाहिए, क्योंकि जब आप अपनी work डायरेक्टरी को साफ करेंगे तो आप results खो देंगे।
1.3. Workflow फ़ाइल में मॉड्यूल को import करें¶
rnaseq.nf फ़ाइल में statement include { FASTQC } from './modules/fastqc.nf' जोड़ें:
1.4. एक इनपुट declaration जोड़ें¶
एक default value के साथ एक इनपुट पैरामीटर declare करें:
1.5. Workflow block में एक इनपुट channel बनाएं¶
इनपुट channel बनाने के लिए एक basic .fromPath() channel factory का उपयोग करें:
| rnaseq.nf | |
|---|---|
1.6. इनपुट channel पर FASTQC process को call करें¶
| rnaseq.nf | |
|---|---|
1.7. Workflow को चलाएं यह जांचने के लिए कि यह काम करता है¶
हम command line से इनपुट specify करने के लिए --reads पैरामीटर का उपयोग कर सकते हैं, लेकिन development के दौरान हम lazy हो सकते हैं और बस हमारे द्वारा set किए गए test default का उपयोग कर सकते हैं।
कमांड आउटपुट
यह बहुत जल्दी चलना चाहिए अगर आपने भाग 1 पर काम किया है और पहले से ही कंटेनर को pull कर लिया है। यदि आपने इसे छोड़ दिया है, तो Nextflow आपके लिए कंटेनर को pull करेगा; इसके होने के लिए आपको कुछ भी करने की आवश्यकता नहीं है, लेकिन आपको एक मिनट तक प्रतीक्षा करने की आवश्यकता हो सकती है।
आप FASTQC process द्वारा publishDir directive द्वारा निर्दिष्ट के अनुसार results/fastqc के तहत आउटपुट पा सकते हैं।
2. Adapter trimming और post-trimming quality control जोड़ें¶
हम Trim_Galore wrapper का उपयोग करने जा रहे हैं, जो trimming के लिए Cutadapt और post-trimming quality control के लिए FastQC को bundle करता है।
2.1. Trimming और QC process के लिए एक मॉड्यूल बनाएं¶
आइए TRIM_GALORE process को रखने के लिए modules/trim_galore.nf नाम की एक मॉड्यूल फ़ाइल बनाएं:
फ़ाइल को code editor में खोलें और निम्नलिखित code को इसमें कॉपी करें:
2.2. Workflow फ़ाइल में मॉड्यूल को import करें¶
rnaseq.nf फ़ाइल में statement include { TRIM_GALORE } from './modules/trim_galore.nf' जोड़ें:
| rnaseq.nf | |
|---|---|
2.3. इनपुट channel पर process को call करें¶
| rnaseq.nf | |
|---|---|
2.4. Workflow को चलाएं यह जांचने के लिए कि यह काम करता है¶
कमांड आउटपुट
यह भी बहुत जल्दी चलना चाहिए, क्योंकि हम इतनी छोटी इनपुट फ़ाइल पर चला रहे हैं।
आप TRIM_GALORE process द्वारा publishDir directive द्वारा निर्दिष्ट के अनुसार results/trimming के तहत आउटपुट पा सकते हैं।
ENCSR000COQ1_1.fastq.gz_trimming_report.txt ENCSR000COQ1_1_trimmed_fastqc.zip
ENCSR000COQ1_1_trimmed_fastqc.html ENCSR000COQ1_1_trimmed.fq.gz
3. Reads को reference genome से align करें¶
अंत में हम Hisat2 का उपयोग करके genome alignment step चला सकते हैं, जो FastQC-style quality control metrics भी emit करेगा।
3.1. HiSat2 process के लिए एक मॉड्यूल बनाएं¶
आइए HISAT2_ALIGN process को रखने के लिए modules/hisat2_align.nf नाम की एक मॉड्यूल फ़ाइल बनाएं:
फ़ाइल को code editor में खोलें और निम्नलिखित code को इसमें कॉपी करें:
3.2. Workflow फ़ाइल में मॉड्यूल को import करें¶
rnaseq.nf फ़ाइल में statement include { HISAT2_ALIGN } from './modules/hisat2_align.nf' जोड़ें:
| rnaseq.nf | |
|---|---|
3.3. Genome index प्रदान करने के लिए एक पैरामीटर declaration जोड़ें¶
एक default value के साथ एक इनपुट पैरामीटर declare करें:
| rnaseq.nf | |
|---|---|
3.4. TRIM_GALORE द्वारा आउटपुट किए गए trimmed reads पर HISAT2_ALIGN process को call करें¶
Trimmed reads पिछले step द्वारा आउटपुट किए गए TRIM_GALORE.out.trimmed_reads channel में हैं।
इसके अलावा, हम Hisat2 tool को gzipped genome index tarball प्रदान करने के लिए file (params.hisat2_index_zip) का उपयोग करते हैं।
3.5. Workflow को चलाएं यह जांचने के लिए कि यह काम करता है¶
कमांड आउटपुट
आप HISAT2_ALIGN process द्वारा publishDir directive द्वारा निर्दिष्ट के अनुसार results/align के तहत आउटपुट पा सकते हैं।
यह प्रत्येक नमूने पर लागू करने के लिए आवश्यक basic processing को पूरा करता है।
हम भाग 2 में MultiQC report aggregation जोड़ेंगे, जब हम workflow को एक बार में कई नमूने स्वीकार करने योग्य बना लेंगे।
सारांश¶
आप जानते हैं कि single-end RNAseq नमूनों को व्यक्तिगत रूप से प्रोसेस करने के लिए सभी मुख्य steps को कैसे wrap करें।
आगे क्या है?¶
जानें कि कैसे workflow को कई नमूनों को parallel में प्रोसेस करने के लिए modify करें, सभी नमूनों के लिए सभी steps में QC reports को aggregate करें, और paired-end RNAseq data पर workflow चलाना enable करें।