RNA-seq:轉錄組數據分析處理(上)(2019/05/07更新)

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>

inllumina公司測序的cDNA短鏈形式

兩端的序列是保護堿基(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的安裝:
  1. 可以通過點擊清華大學開源軟件站或者檢索“清華大學 conda”訪問鏡像網站(清華鏡像站因為服務器在中國訪問速度比較快),點擊Anoconda界面,選擇Miniconda下載安裝,windows在安裝好需要設置環境變量。(該鏡像將于近日停用可以更換為中科大或者其他源)

清華大學宣布停止Anaconda鏡像服務

  1. linux測試Miniconda的安裝:conda -v
  2. 創建名為rna的環境變量:conda create -n rna python=2(許多軟件依賴python2環境)
  3. 配置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 transcriptomeGapped aligenment to genome。
軟件hisat2STAR在比對回帖上都有比較好的表現。有文獻顯示,hisat2在納偽較少但是棄真較多,但是速度比較快。STAR就比對而言綜合質量比較好,在長短reads回帖上都有良好發揮。由于hisat2的速度優勢,選擇hisat2作為本次比對的軟件。
在比對之前首先要先進行索引文件的獲取或者制作。

1. 索引文件的獲取

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 。我會拉你進群,當然有問題也可以微信咨詢我。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容

  • 參考學習《R語言與Bioconductor生物信息學應用》第六章 前言 Y叔的公眾號biobabble發過一篇【聽...
    王詩翔閱讀 13,713評論 0 49
  • 什么是高通量測序? 高通量測序技術(High-throughput sequencing,HTS)是對傳統Sang...
    翠湖心影閱讀 21,155評論 2 81
  • 轉錄組學習一(軟件安裝) 轉錄組學習二(數據下載) 轉錄組學習三(數據質控) 轉錄組學習四(參考基因組及gt...
    Dawn_WangTP閱讀 20,645評論 3 34
  • 在一次事故中 我喪失了身體的某些記憶 雖然我仍完好的呈現在這里 但是意識已經近乎死過一次 某些通道關閉了 曾經自然...
    滿_3539閱讀 197評論 3 1
  • 算起來好像很長時間沒有監督寶的語文作業了,一直以來也不知為什么,在對于寶的數學作業上我付出的精力會更多。 記得...
    商望芳閱讀 348評論 1 0