superqun原創
一、流程概括
- RNA-seq的原始數據(raw data)的質量評估
- linux環境和R語言環境
- raw data的過濾和清除不可信數據(clean reads)
- reads回帖基因組和轉錄組(alignment)
- 計數(count )
- 基因差異分析(Gene DE)
- 數據的下游分析
二、準備工作
- 學習illumina公司測序原理
- 測序得到的fastq文件
- 注釋文件和基因組文件的準備
1. fastq測序文件
在illumina的測序文件中,采用雙端測序(paired-end),一個樣本得到的是seq_1.fastq.gz和seq_2.fastq.gz兩個文件,每個文件存放一段測序文件。在illumina的測序的cDNA短鏈被修飾為以下形式(圖源見水?。?/p>
兩端的序列是保護堿基(terminal sequence)、接頭序列(adapter)、索引序列(index)、引物結合位點(Primer Binding Site):其中 adapter是和flowcell上的接頭互補配對結合的;index是一段特異序列,加入index是為了提高illumina測序儀的使用率,因為同一個泳道可能會測序多個樣品,樣品間的區分就是通過index區分。參考:illumina 雙端測序(pair end)、雙端測序中read1和read2的關系。
在illumina公司測得的序列文件經過處理以fastq文件協議存儲為*.fastq格式文件。在fastq文件中每4行存儲一個read。
第一行:以@開頭接ReadID和其他信息,分別介紹了
第二行:read測序信息
第三行:規定必須以“+”開頭,后面跟著可選的ID標識符和可選的描述內容,如果“+”后面有內容,該內容必須與第一行“@”后的內容相同
第四行:每個堿基的質量得分。記分方法是利用ERROR P經過對數和運算分為40個級別分別與ASCII碼的第33號!
和第73號I
對應。用ASCII碼表示堿基質量是為了減少文件空間占據和防止移碼導致的數據損失。fastq文件預覽如下:
2.注釋文件和基因組文件的獲取
- 基因組獲取方式:可以從NCBI、NCSC、Ensembl網站或者檢索關鍵詞“hg38 ftp UCSC” 人類基因組hg38.fa.gz大概是938MB左右。文件獲取可以點擊網站下載。
可以通過云盤的離線下載來加速下載進程
- 基因組的選擇:以Ensembl網站提供的基因組為例,比對用基因組應該選擇
Homo_sapiens.GRCh38.dna.primary_assembly.fa
- Ensembl基因組的不同版本詳見README和高通量測序數據處理學習記錄(零):NGS分析如何選擇合適的參考基因組和注釋文件
三、軟件安裝
- 安裝方式:軟件安裝可以通過例如
apt-get
、miniconda
等方式來安裝。由于miniconda的便捷行,使用conda進行如下軟件的安裝。 - 軟件列舉
質控:fastqc ,multiqc , trimmomatic, cutadapt, trim-galore
比對:star , hisat2 , tophat , bowtie2 , bwa , subread
計數:htseq , bedtools, salmon
- miniconda的安裝:
- 可以通過點擊清華大學開源軟件站或者檢索“清華大學 conda”訪問鏡像網站(清華鏡像站因為服務器在中國訪問速度比較快),點擊Anoconda界面,選擇Miniconda下載安裝,windows在安裝好需要設置環境變量。(該鏡像將于近日停用可以更換為中科大或者其他源)
- linux測試Miniconda的安裝:
conda -v
- 創建名為rna的環境變量:
conda create -n rna python=2
(許多軟件依賴python2環境) - 配置conda,添加鏡像源頭:輸入如下命令(暫時可用,但是該鏡像將于近日停用。屆時會更新新的鏡像地址和設置方法)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- 軟件安裝:
conda install <software>
會自動安裝軟件和軟件環境。值得注意的是需要在rna的環境變量下安裝以上軟件。激活rna環境變量的代碼:
source activate rna
四、質量匯報生成與讀取
1.fastq質量匯報
使用命令fastqc -o <output dir> <seqfile1,seqfile2..>
來進行質量報告。每個fastqc文件會獲得一個質量分析報告,來描述此次RNA-seq的測序質量。
獲取質量報告如圖:
Basic Statistics
從read水平來總覽,判斷測序質量。
Encoding :測序平臺的版本,因為不同版本的 error p的計算方法不一樣。
Total sequence:測序深度。一共測序的read數。是質量分析的主要參數。
Sequence length:測序長度。
%GC:GC堿基含量比,一般是物種特異性,比如人類是42%左右。
Perbase sequence quality
橫坐標: 第1-100個測序得到的堿基
縱坐標: 測序質量評估。這里的Q=-10*lg10(error P),即20%代表1%的錯誤讀取率,30%代表0.1%的錯誤讀取率
箱型圖: 紅色線,是某個順序下測序堿基所有測序質量的中位數。黃色塊,是測序質量在25%-75%區域。藍色線,平均數。
一般要求: 測序箱型圖10%的線大于Q=20。Q20過濾法。
per tail sequence quality
橫坐標:同上。
縱坐標:tail的index編號。
目的:防止測序過程中某些tail受不可控因素測序質量低。
標準:藍色表示質量高,淺色或暖色表示質量低,后續的分析可以去除低質量tail。
Per sequence quality scores
從read的總體測序質量分布來判定此次的測序質量,是質量分析的重要標準之一。
橫坐標:表示read的測序質量Q=-10*lg10(error P)。
縱坐標:表示在該Q值下的read 的數量
標準:需要集中在高分區
Per base sequence content
橫坐標:1-100的測序堿基位置
縱坐標:堿基百分比
標準:理論上,ATCG堿基的分布應該差別不大,即四條線應該大致平行狀態。如果AT或CG差異超過10%,此項檢測是危險的。一般是測序機器前幾個堿基測序時候因為狀態調整導致測序略有偏差,如果前幾個堿基偏差較大,可以在后期將前幾個堿基切掉。
Sequence Length Distribution
統計read的堿基長度,本例理論上測序應該全是100bp。
橫坐標:是read的堿基長度
縱坐標:是該長度下的read數量
Per sequence GC content
橫坐標:每個read的平局GC含量占比
縱坐標:一定GC比下的read數
標準:藍色是理論值,紅色是真實值。兩者接近是比較好的狀態。如果有雙峰,可能混有了其他物種的DNA序列。
Adapter Content
一般測序在初步生成fastq文件時候,adapter會被去除,但是有的會沒有去除或者遺漏部分adapter。所以這一步是檢測RNA-seq測序過程中adapter是否去除。如果沒有去除會嚴重影響后續的比對工作。沒有去除的adapter在質量處理環節會被處理掉。
2. multiqc質量報告
multiqc可以對幾個fastqc報告文件進行總結并匯總到一個報告文件中,以更直觀到防止展示。使用方法
multiqc <analysis directory>
五、數據處理
數據處理內容:fiter the bad quality reads and remove adaptors.
處理軟件:數據到處理可以使用多款軟件,trim_galore在各文獻中表現良好。
1.trim_galore 的使用方法
trim_galore:可以處理illumina,nextera3,smallRNA測序平臺的雙端和單端數據,包括去除adapter和低質量reads。
trim_galore的參數: trim_galore的參數在處理過程比較重要:
trim_galore [options] <filename>
--quality<int> #設定phred quality閾值。默認20(99%的read質量),如果測序深度較深,可以設定25
--phred33 #設定記分方式,代表Q+33=ASCII碼的方式來記分方式。這是默認值。
--paired # 對于雙端結果,一對reads中若一個read因為質量或其他原因被拋棄,則對應的另一個read也拋棄。
--output_dir #輸出目錄,需確保路徑存在并可以訪問
--length #設定長度閾值,小于此長度會被拋棄。這里測序長度是100我設定來75,感覺有點浪費
--strency #設定可以忍受的前后adapter重疊的堿基數,默認是1。不是很明白這個參數的意義
-e<ERROR rate> #設定默認質量控制數,默認是0.1,即ERROR rate大于10%的read 會被舍棄,如果添加來--paired參數則會舍棄一對reads
<filename> #如果是采用illumina雙端測序的測序文件,應該同時輸入兩個文件。
構建命令:
trim_galore -output_dir clean --paired --length 75 --quality 25 --stringency 5 seq_1.fasq.gz seq_2.fastq.gz
處理需要花上一定時間和磁盤空間。得到處理后數據
2. 整理后數據的質量分析。
對過濾后對文件進行質量分析。觀察過濾結果。同樣使用fastqc和multiqc兩個軟件進行質量分析。得到結果如下:
ENCFF108UVC_val_1_fastqc的質量報告
觀察到總read數減小和總體read的質量變高,小部分adapter也被去除。更具體過濾和trim_galore的數據處理情況可以在seq_trimming_report.txt中查看。
SUMMARISING RUN PARAMETERS
==========================
Input filename: ENCFF108UVC.fastq.gz
Trimming mode: paired-end
Trim Galore version: 0.5.0
Cutadapt version: 1.18
Quality Phred score cutoff: 25
Quality encoding type selected: ASCII+33
Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; auto-detected)
Maximum trimming error rate: 0.1 (default)
Minimum required adapter overlap (stringency): 5 bp
Minimum required sequence length for both reads before a sequence pair gets removed: 75 bp
Output file will be GZIP compressed
This is cutadapt 1.18 with Python 2.7.6
Command line parameters: -f fastq -e 0.1 -q 25 -O 5 -a AGATCGGAAGAGC ENCFF108UVC.fastq.gz
Processing reads on 1 core in single-end mode ...
Finished in 1038.93 s (40 us/read; 1.50 M reads/minute).
=== Summary ===
Total reads processed: 26,038,229
Reads with adapters: 714,205 (2.7%)
Reads written (passing filters): 26,038,229 (100.0%)
Total basepairs processed: 2,603,822,900 bp
Quality-trimmed: 82,577,636 bp (3.2%)
Total written (filtered): 2,513,138,030 bp (96.5%)
由報告可以知道處理的具體詳情。
六、比對回帖
概況:使用處理后的fastq文件和基因組與轉錄組比對,確定在轉錄組或者基因組中的關系。在轉錄組和基因組的比對采取的方案不同。分別是ungapped alignment to transcriptome
和Gapped aligenment to genome
。
軟件:hisat2
和STAR
在比對回帖上都有比較好的表現。有文獻顯示,hisat2在納偽較少但是棄真較多,但是速度比較快。STAR就比對而言綜合質量比較好,在長短reads回帖上都有良好發揮。由于hisat2的速度優勢,選擇hisat2作為本次比對的軟件。
在比對之前首先要先進行索引文件的獲取或者制作。
1. 索引文件的獲取
- 不同的比對軟件構建索引方式不同,所用的索引也不盡相同
- 索引文件可以去網站下載也可以自己構建。但是索引構建會比較費時間。建立索引文件需要大約一個小時(MAC: 2.6 GHz Intel Core i5/ 8 GB 1600 MHz DDR3) 。
- 網站下載hisat2基因組索引:http://ccb.jhu.edu/software/hisat2/index.shtml
- 本地索引文件構建參考了CSDN@ Richard_Jolin的構建過程
-
索引文件的格式如下,是由多個文件構成,要保證索引文件的格式和名稱部分一致。
在這里插入圖片描述
2. hisat2的比對回帖
使用hisat2回帖
公式構建根據hisat2 的使用說明書構建了以下公式:
hisat2 -p 6 -x <dir of index of genome> -1 seq_val_1.fq.gz -2 seq_val_2.fq.gz -S tem.hisat2.sam
參數說明:
-p #多線程數
-x #參考基因組索引文件目錄和前綴
-1 #雙端測序中一端測序文件
-2 #同上
-S #輸出的sam文件
說明:在比對過程中,hisat會自動將雙端測序匹配同一reads并在基因組中比對,最后兩個雙端測序生成一個sam文件。比對回帖過程需要消耗大量時間和電腦運行速度和硬盤存儲空間。5G左右fastq文件比對回帖過程消耗大概一個小時,生成了17G的sam格式文件。回帖完成會生成一個回帖報告。
samtools 軟件進行格式轉換
SAM文件和BAM文件
samtools 是針對比對回帖的結果——sam和bam格式文件的進一步分析使用的軟件。sam格式文件由于體量過大,一般都是使用bam文件來進行存儲。由于bam文件是二進制存儲所以文件大小比sam格式文件小許多,大約是sam格式體積的1/6 。
samtools將sam轉換bam文件
samtools view -S seq.sam -b > seq.bam #文件格式轉換
samtools sort seq.bam -0 seq_sorted.bam ##將bam文件排序
samtools index seq_sorted.bam #對排序后對bam文件索引生成bai格式文件,用于快速隨機處理。
至此一個回帖到基因組對RNA-seq文件構建完成。這個seq_sourted.bam
文件可以通過samtools
或者IGV( Integrative Genomics Viewer)獨立軟件進行查看。在IGV軟件中載入seq_sourted.bam
文件。
可以很直觀清晰地觀察到reads在基因組中的回帖情況和外顯子與內含子的關系。
3.對回帖bam文件進行質量評估。
**samtools falgstate **:統計bam文件中比對flag信息,然后輸出比對結果。
公式:
samtools flagstate seq_sorted.bam > seq_sorted.flagstate
結果如下
47335812 + 0 in total (QC-passed reads + QC-failed reads)
3734708 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
46714923 + 0 mapped (98.69% : N/A)
43601104 + 0 paired in sequencing
21800552 + 0 read1
21800552 + 0 read2
42216752 + 0 properly paired (96.82% : N/A)
42879780 + 0 with itself and mate mapped
100435 + 0 singletons (0.23% : N/A)
337412 + 0 with mate mapped to a different chr
308168 + 0 with mate mapped to a different chr (mapQ>=5)
七、count
計算RNA-seq測序reads對在基因組中對比對深度。
計數工具:feature counts
公式構建:
feature counts -T 6 -t exon -g gene_id -a <gencode.gtf> -o seq_featurecount.txt <seq.bam>
參數:
-g # 注釋文件中提取對Meta-feature 默認是gene_id
-t # 提取注釋文件中的Meta-feature 默認是 exon
-p #參數是針對paired-end 數據
-a #輸入GTF/GFF 注釋文件
-o #輸出文件
接下來是表達矩陣構建。在R語言環境下分析。
</br>
共勉!歡迎大家踴躍交流,討論,質疑,批評。留言必回。
我想建立并管理一個高質量的生信&統計相關的微信討論群,如果你想參與討論,可以添加微信:veryqun 。我會拉你進群,當然有問題也可以微信咨詢我。