RNA-seq數(shù)據(jù)分析---方法學(xué)文章的實(shí)戰(zhàn)練習(xí)

前言

這次給大家?guī)?lái)的是16年發(fā)表在NATURE PROTOCOLS上面的一篇處理RNA-seq數(shù)據(jù)的文章:Transcript-level expression analysis of RNA-seq experiments with HISAT, StringTie and Ballgown
和它的12年發(fā)表于同一個(gè)雜志的兄弟文章:Differential gene and transcript expression analysis of RNA-seq experiments with TopHat and Cufflinks都是NATURE PROTOCOLS上閱讀量最大的文章。

NATURE PROTOCOLS

當(dāng)然還有很多其它的介紹不止生信的方法文章费奸,大家有時(shí)間可以去探究弥激。
同時(shí)我這里就不再贅述RNA-seq的具體原理,有需要了解的請(qǐng)移步:一個(gè)簡(jiǎn)略的RNA-seq演示
至于軟件的安裝到官網(wǎng)下載愿阐,解壓后將bin/添加進(jìn)路徑即可微服,這里不再做講解。
#######所有操作皆在LINUX&R上完成缨历,默認(rèn)基本處理軟件已經(jīng)安裝


本體介紹

大佬的文章

事實(shí)上作者團(tuán)隊(duì)一直致力于開發(fā)出更好的解決數(shù)據(jù)處理的軟件以蕴,就目前12年推出的Tohat2和Cufflinks已經(jīng)不是那么的令人滿意了柏锄,所以他們又開發(fā)了 HISAT, StringTie and Ballgown三件套完成大家對(duì)于一個(gè)RNA-seq所有的幻想施逾。#但實(shí)際上目前還存在著其他的性能很優(yōu)秀軟件也可以滿足需求早直,例如STAR等等惑畴,但作為菜鳥來(lái)說(shuō)只有先一步一步的學(xué)習(xí)了。

好了葬毫,我們先對(duì)這篇文章給出的處理方法有個(gè)大概的了解梗醇。

pipeline

  1. alignment of the reads to the genome
  2. assembly the alignments into full-length transcripts
  3. quantification of the differencesin expression levels of each gene and transcript
  4. calculation of the differences in expression for all genes among the different conditions
An overview of the 'new Tuxedo' protocol

這個(gè)protocol首先從原始RAN-seq數(shù)據(jù)入手捉捅,輸出數(shù)據(jù)包括基因list冶匹,轉(zhuǎn)錄本习劫,及每個(gè)樣本的表達(dá)量,能夠表現(xiàn)差異表達(dá)基因的表格并完成顯著性的計(jì)算嚼隘。

  1. 第一步是使用HISAT將讀段匹配到參考基因組上,使用者可以提供注釋文件诽里,但HISAT依舊會(huì)檢測(cè)注釋文件沒(méi)有列出來(lái)的剪切位點(diǎn)
  2. 第二步,比對(duì)上的reads將會(huì)被呈遞給StringTie進(jìn)行轉(zhuǎn)錄本組裝飞蛹,StringTie單獨(dú)的對(duì)每個(gè)樣本進(jìn)行組裝须肆,在組裝的過(guò)程中順帶估算每個(gè)基因及isoform的表達(dá)水平
  3. 第三步,所有的轉(zhuǎn)錄本都被呈遞給StringTie的merge函數(shù)進(jìn)行merge桩皿,這一步是必須的,因?yàn)橛行颖镜霓D(zhuǎn)錄本可能僅僅被部分reads覆蓋幢炸,無(wú)法被第二步的StringTie組裝出來(lái)泄隔。merge步驟可以創(chuàng)建出所有樣本里面都有的轉(zhuǎn)錄本,方便下一步的對(duì)比
  4. merge的數(shù)據(jù)再一次被呈遞給StringTie宛徊,StringTie可以利用merge的數(shù)據(jù)重新估算轉(zhuǎn)錄本的豐度佛嬉,還能額外的提供轉(zhuǎn)錄本reads數(shù)量的數(shù)據(jù)給下一步的ballgown
  5. 最后一步:Ballgown從上一步獲得所有轉(zhuǎn)錄本及其豐度逻澳,根據(jù)實(shí)驗(yàn)條件進(jìn)行分類統(tǒng)計(jì)

注意事項(xiàng)Warning:

  • HISAT, StringTie, Ballgown并不是唯一處理RNA-seq的方法,也并不能處理所有的RNA-seq數(shù)據(jù)暖呕。
  • 例如質(zhì)量控制或者去除測(cè)序污染/去除接頭/去除低質(zhì)量數(shù)據(jù)(可以使用FastQC以及FASTXtoolkit做到)
  • 這個(gè)pipeline無(wú)法處理第三代測(cè)序的數(shù)據(jù)
  • Ballgwon可以使用stringtie/cufflinks/RSEM產(chǎn)出的數(shù)據(jù)斜做,但是可能無(wú)法接受其它程序產(chǎn)出的結(jié)果
  • 默認(rèn)參數(shù)適用于小至三個(gè),大至小數(shù)百的樣本處理湾揽,對(duì)于特殊需求還需要參考manual

數(shù)據(jù)處理設(shè)計(jì)

Read alignment with HISAT

總體上來(lái)說(shuō)HISAT利用了BWA和Bowtie的算法瓤逼,同時(shí)解決了mRNA中不存在內(nèi)含子難以比對(duì)的問(wèn)題,比對(duì)上代主流RNA-seq比對(duì)工具能快50倍库物,同時(shí)需求更少的內(nèi)存<8G(這就意味著你可以在PC上跑數(shù)據(jù))霸旗,20個(gè)樣本,每個(gè)樣本一億reads的估計(jì)戚揭,用一臺(tái)電腦一天之內(nèi)能夠跑完诱告。使用者可以提供精確的基因注釋來(lái)提高在已知基因區(qū)域的準(zhǔn)確性,但這是可選項(xiàng)民晒。

事實(shí)上精居,針對(duì)RNA-seq數(shù)據(jù)的align目前有很多工具,16年12月12日出版的NATURE METHODS上的一篇文章潜必,利用分別使用人和一種叫malaria的寄生蟲的數(shù)據(jù)靴姿,模擬出三種復(fù)雜度的數(shù)據(jù)集(T1、T2和T3)刮便。對(duì)于復(fù)雜度的衡量空猜,定義了三個(gè)尺度:

  • 突變率
  • indel比例
  • 錯(cuò)誤率
    T1復(fù)雜度最低,T3最高恨旱。
    隨后使用了目前主流的比對(duì)工具進(jìn)行了比對(duì)辈毯。
    因?yàn)镽NA-Seq測(cè)序的特性,天然的會(huì)有一部分?jǐn)?shù)據(jù)延伸到內(nèi)含子區(qū)搜贤,這部分跨越外顯子和內(nèi)含子的reads就稱為『junction reads』谆沃,所以RNA-Seq比對(duì)軟件需要針對(duì)此進(jìn)行優(yōu)化,而文章做benchmark也考慮到這點(diǎn)仪芒。分兩個(gè)水平做比較:
  • base and read level唁影,這點(diǎn)和一般的DNA aligner一樣
  • junction-level
    度量軟件的結(jié)果時(shí),用了兩個(gè)值:
  • recall: 所有base中正確比對(duì)的比例掂名。Tophat2在T1 base&read的表現(xiàn)据沈,recall是85%-95%,T2降到80%饺蔑,T3更是雪崩式降至20%以下锌介。這部分表現(xiàn)好的是Novoalign和MapSplice2。
  • precision:所有比對(duì)上的base中,正確比對(duì)的比例孔祸。對(duì)于T1和T2隆敢,大部分軟件這個(gè)值都較高。
    結(jié)果上圖:



    接下來(lái)看看調(diào)參(自行設(shè)置參數(shù)崔慧,而不是使用軟件默認(rèn)參數(shù))比對(duì)拂蝎,直接說(shuō)結(jié)論吧,不管是否調(diào)參惶室,表現(xiàn)robust的是CLC温自,GSNAP、Novoalign拇涤、STAR以及MapSplice2捣作。針對(duì)復(fù)雜度高的T3數(shù)據(jù),Tophat2調(diào)參和默認(rèn)參數(shù)得到的比對(duì)率相差67%還多鹅士。



    另外還有運(yùn)行時(shí)間的比較券躁,這輪表現(xiàn)好的是HISAT/HISAT2,其實(shí)也能看出掉盅,數(shù)據(jù)復(fù)雜度越高也拜,比對(duì)耗時(shí)越長(zhǎng)。

Transcript assembly and quantification with StringTie

RNA-seq的分析依賴于精準(zhǔn)的對(duì)于基因isoform的重建以及對(duì)于基因相對(duì)豐度的預(yù)測(cè)趾痘。繼承于Cufflinks慢哈,StringTie相對(duì)于之前開發(fā)的工具更為準(zhǔn)確,需求內(nèi)存和耗時(shí)也更少永票。
使用者一樣可以使用注釋文件來(lái)幫助StringTie運(yùn)行卵贱,對(duì)于低豐度的數(shù)據(jù)比較有幫助。此時(shí)StringTie依舊會(huì)對(duì)非注釋區(qū)域進(jìn)行轉(zhuǎn)錄本的組裝侣集,所以注釋文件在這里是可選選項(xiàng)键俱。

轉(zhuǎn)錄本組裝完成后,使用者可以利用gffcompare(StringTie工具包含)工具來(lái)得知有多少轉(zhuǎn)錄本和注釋文件相同世分,又有多少新的轉(zhuǎn)錄本:

#input: gff or gtf format
transcripts.gtf

command line example:
$ gffcompare -G -r chrX.gtf transcripts.gtf
#-r : reference
#-G :compare all transcripts
#-o :prefix

output file 1: gffcmp.annotated.gtf
# 顯示StringTie組裝的轉(zhuǎn)錄本與注釋文件內(nèi)的轉(zhuǎn)錄本的差別(會(huì)給每個(gè)轉(zhuǎn)錄本加入一個(gè)class code编振,我理解為一個(gè)標(biāo)識(shí),釋義如下圖)
output dile 2: gffcmp.stats
# 根據(jù)注釋文件顯示組裝結(jié)果的準(zhǔn)確性和陽(yáng)性預(yù)測(cè)率

class codes

由于在實(shí)驗(yàn)中臭埋,我們會(huì)處理多個(gè)RNA-seq數(shù)據(jù)踪央,單個(gè)樣本里面的基因和iosforms與其它樣本的數(shù)據(jù)很少相同,但是為了進(jìn)行比較就需要它們以一個(gè)相同的形式進(jìn)行組裝瓢阴,作者通過(guò)StringTie的merge工具解決了這個(gè)問(wèn)題畅蹂,將所有樣本中發(fā)現(xiàn)的基因進(jìn)行merge。下圖的例子可以幫助理解荣恐。


example

如圖所示魁莉,四個(gè)樣本中組裝得到四個(gè)轉(zhuǎn)錄本,最后merge得到A/B兩個(gè)轉(zhuǎn)錄本。1/2樣本與參考基因組相同merge得到A轉(zhuǎn)錄本旗唁,3/4樣本相互吻合但與參考基因組不一樣,所以merge得到B轉(zhuǎn)錄本痹束。
在merge步驟之后检疫,需要StringTie再運(yùn)行一遍去重新估算merge得到的轉(zhuǎn)錄本的豐度。

Chevy理解:這就是相當(dāng)于重新定義了一個(gè)annotation file進(jìn)行二次重新組裝祷嘶,相對(duì)于第一次組織可以提高準(zhǔn)確度和敏感性屎媳。比已有注釋文件的優(yōu)勢(shì)在于可以發(fā)現(xiàn)更多的isoforms。

Differential expression analysis with Ballgown

組裝和定量完轉(zhuǎn)錄本之后自然需要進(jìn)行基因表達(dá)差異分析论巍,統(tǒng)計(jì)建模和可視化烛谊。R和Bioconductor提供了一攬子的工具處理這些任務(wù),包括raw data的plot作圖嘉汰,數(shù)據(jù)的標(biāo)準(zhǔn)化丹禀,下游的統(tǒng)計(jì)建。此處使用Ballgown包作為承上啟下的橋梁鞋怀。

在R里面使用Ballgown處理需要得到:

  • 表型數(shù)據(jù)双泪。關(guān)于樣本的信息
  • 表達(dá)數(shù)據(jù)。標(biāo)準(zhǔn)化和未標(biāo)準(zhǔn)化的關(guān)于外顯子密似,junction焙矛,轉(zhuǎn)錄本,基因的表達(dá)數(shù)量
  • 基因信息残腌。有關(guān)外顯子村斟,junction,轉(zhuǎn)錄本抛猫,基因的坐標(biāo)以及注釋信息

而大多數(shù)的差異表達(dá)分析都會(huì)包括下面幾個(gè)步驟:

  • 數(shù)據(jù)可視化和檢查
  • 差異表達(dá)的統(tǒng)計(jì)分析
  • 多重檢驗(yàn)校正
  • 下游檢查和數(shù)據(jù)summary

Ballgown包可以完成以上的幾個(gè)步驟并且可以聯(lián)合R語(yǔ)言的其它操作進(jìn)行分析

Ballgown使用:

  • 數(shù)據(jù)的讀入:需要將StringTie輸出的數(shù)據(jù)結(jié)合表型數(shù)據(jù)蟆盹,這里需要保證表型數(shù)據(jù)的identifier和StringTie輸出數(shù)據(jù)的一致,不然會(huì)報(bào)錯(cuò)
  • 預(yù)測(cè)豐度的檢查:以FPKM(fragments per kilobase of transcript per million mapped reads)為單位的豐度預(yù)測(cè)將會(huì)根據(jù)library size進(jìn)行標(biāo)準(zhǔn)化邑滨。#極端差異此處需要引起注意
  • 使用線性模型進(jìn)行差異表達(dá)分析日缨,由于FPKM對(duì)于轉(zhuǎn)錄本解讀過(guò)于曲解,所以這里需要使用log轉(zhuǎn)化處理數(shù)據(jù)掖看,隨后再使用線性模型進(jìn)行差異分析匣距。
  • Ballgown可以對(duì)time-course和fixed-condition數(shù)據(jù)進(jìn)行差異分析,但是無(wú)法避免批次效應(yīng)帶來(lái)的誤差哎壳。#使用stattest功能可以指定任何已知的cofounder
  • Ballgown可以幫助你在基因毅待,轉(zhuǎn)錄本,外顯子归榕,junction水平上進(jìn)行差異分析
  • 結(jié)果會(huì)以表格形式展現(xiàn)尸红,如果樣本夠多還有p值和q值
  • 結(jié)果數(shù)據(jù)可以用來(lái)進(jìn)行下一步的gene set分析(例如GSEA)等等

實(shí)戰(zhàn)示例

準(zhǔn)備階段

實(shí)際上本輪操作就是按照文章給的示例數(shù)據(jù)走了一遍流程:

文章中,為了減少計(jì)算時(shí)間,方便讀者重復(fù)外里,作者截取了一批實(shí)驗(yàn)數(shù)據(jù)中能夠匹配到chromosomeX上的數(shù)據(jù)作為示例數(shù)據(jù)怎爵,chromosomeX是一個(gè)基因相對(duì)較為豐富的染色體,可以占到基因組的5%左右盅蝗。

首先是下載數(shù)據(jù)隨后解壓:

$nohup wget ftp://ftp.ccb.jhu.edu/pub/RNAseq_protocol/chrX_data.tar.gz 2>download.log &
$tar zxvf chrX_data.tar.gz

其中包括如下數(shù)據(jù):


文件數(shù)據(jù)

sample文件夾下有12個(gè)fastq格式的paired-end RNA-seq文件鳖链,從兩地人群中(英格蘭島住民和約魯巴住民)各取六個(gè)樣,六個(gè)樣又分為男女性別各三個(gè)(最少的生物學(xué)重復(fù))墩莫。

sample

隨后介紹一個(gè)騷命令:

HISAT2可以直接從NCBI下載sra格式的文件并作為輸入文件格式
下面以ERR188245測(cè)序數(shù)據(jù)為例
$ hisat2 -p 8 --dta -x chrX_data/indexes/chrX_tran --sra-acc ERR188245 –S ERR188245_chrX.sam
可以說(shuō)是相當(dāng)?shù)膸腿送祽辛?/p>

index文件夾下包含著HISAT2對(duì)于染色體X的index文件

index

當(dāng)然HISAT2已經(jīng)為各位老爺準(zhǔn)備好了常見(jiàn)基因組的index文件和genes文件芙委。
點(diǎn)我

genome文件夾下包含這染色體X的序列文件(GRCh38 build 81)

genome

genes文件夾下則包含著針對(duì)基因組的注釋文件(來(lái)自于RefSeq數(shù)據(jù)庫(kù))


annotation

geuvadis_phenodata.csv和mergelist.txt則是用戶著要自己創(chuàng)建表明數(shù)據(jù)關(guān)系的文件,這里作者提供出來(lái)方便使用狂秦。

如果需要建立官網(wǎng)上沒(méi)有基因組的index灌侣,就需要需要使用Hisat2包里面的python腳本:
extract_splice_sites.py和extract_exons.py,從注釋文件里面抽取出剪切位點(diǎn)和外顯子信息

$ extract_splice_sites.py chrX_data/genes/chrX.gtf >chrX.ss
$ extract_exons.py chrX_data/genes/chrX.gtf >chrX.exon
先提取剪切位點(diǎn)和外顯子數(shù)據(jù)
$ hisat2-build --ss chrX.ss --exon chrX.exon chrX_data/genome/chrX.fa chrX_tran
隨后建立HISAT2 index

正式開始

1.將reads比對(duì)上genome

2017-07-24更新:我自己使用的是Ensembl發(fā)表的GRCh38版本的基因組進(jìn)行比對(duì)裂问,所以這里我附上這個(gè)版本的genome和注釋文件的下載地址:

Ensembl版本全基因組的注釋文件下載
HISAT2-index下載genome_tran

# 樣本比對(duì)操作
nohup hisat2 -p 8 --dta -x ~/RNA-seq/chrx/chrX_data/indexes/chrX_tran -1 ~/RNA-seq/chrx/chrX_data/samples/ERRERR188044_chrX_1.fastq.gz -2 ERR188044_chrX_2.fastq.gz -S ERR188044_chrX.sam &

# 數(shù)據(jù)太多我就寫了個(gè)小腳本處理,in sample dir/
for i in *1.fastq.gz; 
do
i=${i%1.fastq.gz*}; 
nohup hisat2 -p 8 --dta -x ~/RNA-seq/chrx/chrX_data/indexes/chrX_tran -1 ${i}1.fastq.gz -2 ${i}2.fastq.gz -S ~/RNA-seq/chrx/chrX_data/result/${i}align.sam 2>~/RNA-seq/chrx/chrX_data/result/${i}align.log & 
done

運(yùn)行結(jié)果如下:


比對(duì)結(jié)果

2.將sam文件轉(zhuǎn)化為bam文件

# 轉(zhuǎn)化操作
samtools sort @ 8 -o ERR188044_chrX.bam ERR188044_chrX.sam

# 批處理, in result dir/
for i in *.sam;
do 
i=${i%_align.sam*}; nohup samtools sort -@ 8 -o ${i}.bam ${i}_align.sam & 
done

結(jié)果如下:

sam to bam

3.組裝轉(zhuǎn)錄本并定量表達(dá)基因

# 單文件操作
stringtie -p 8 -G ~/RNA-seq/chrx/chrX_data/genes/chrX.gtf -o ERR188044_chrX.gtf ERR188044_chrX.bam

# 批處理, in result dir/
for i in *.bam; 
do 
i=${i%.bam*}; nohup stringtie -p 8 -G ~/RNA-seq/chrx/chrX_data/genes/chrX.gtf -o ${i}.gtf ${i}.bam & 
done

結(jié)果如下:


strigtie

4.將所有轉(zhuǎn)錄本合并

warning: 此處的mergelist.txt是自己創(chuàng)建的侧啼,需要包含之前output.gtf文件的路徑

cat ~/RNA-seq/chrx/chrX_data/mergelist.txt
ERR188044_chrX.gtf
ERR188104_chrX.gtf
ERR188234_chrX.gtf
ERR188245_chrX.gtf
ERR188257_chrX.gtf
ERR188273_chrX.gtf
ERR188337_chrX.gtf
ERR188383_chrX.gtf
ERR188401_chrX.gtf
ERR188428_chrX.gtf
ERR188454_chrX.gtf
ERR204916_chrX.gtf
#因?yàn)榫驮诮Y(jié)果目錄下面操作,所以直接顯示文件名即可

stringtie --merge -p 8 -G  ~/RNA-seq/chrx/chrX_data/genes/chrX.gtf -o stringtie_merged.gtf  ~/RNA-seq/chrx/chrX_data/mergelist.txt

#output文件即為
stringtie_merged.gtf 

5.檢測(cè)相對(duì)于注釋基因組愕秫,轉(zhuǎn)錄本的組裝情況

gffcompare -r ~/RNA-seq/chrx/chrX_data/genes/chrX.gtf  -G -o merged stringtie_merged.gtf
#輸出文件信息可見(jiàn)上面的Transcript assembly and quantification with StringTie介紹

6.重新組裝轉(zhuǎn)錄本并估算基因表達(dá)豐度慨菱,并為ballgown創(chuàng)建讀入文件

# 單文件操作
stringtie -e -B -p 8 -G stringtie_merged.gtf -o ballgown/ERR188044_chrX/ERR188044_chrX.gtf ERR188044_chrX.bam

# 批處理, in result dir/
for i in *_chrX.bam; 
do 
i=${i%_chrX.bam*}; nohup stringtie -e -B -p 8 -G stringtie_merged.gtf -o ballgown/${i}/${i}_chrX.gtf  ${i}_chrX.bam & 
done

結(jié)果如下:

table

7.R包的安裝與載入

R語(yǔ)言需要安裝ballgown包和一些接下來(lái)處理會(huì)用到的包(RSkittleBrewer/genefilter/dplyr/devtools)
事實(shí)上我還沒(méi)搞清楚LINUX里面的R包安裝問(wèn)題,老是報(bào)error戴甩,所以這里我就用Windows下的R進(jìn)行操作符喝。

# 首先是幾個(gè)包的載入
>library(ballgown)
>library(RSkittleBrewer)
>library(genefilter)
>library(dplyr)
>library(devtools)

8.數(shù)據(jù)的讀入

# 隨后是數(shù)據(jù)的讀入,CSV文件甜孤,我把所有文件放在桌面协饲,上一步得到的ballgown文件夾直接拷到桌面
> setwd("C:/Users/DELL/Desktop")
> read.csv("geuvadis_phenodata.csv")
         ids    sex population
1  ERR188044   male        YRI
2  ERR188104   male        YRI
3  ERR188234 female        YRI
4  ERR188245 female        GBR
5  ERR188257   male        GBR
6  ERR188273 female        YRI
7  ERR188337 female        GBR
8  ERR188383   male        GBR
9  ERR188401   male        GBR
10 ERR188428 female        GBR
11 ERR188454   male        YRI
12 ERR204916 female        YRI
> pheno_data<-read.csv("geuvadis_phenodata.csv")
> bg_chrX=ballgown(dataDir = "C:/Users/DELL/Desktop/ballgown",samplePattern = "ERR",pData = pheno_data)
# dataDir指的是數(shù)據(jù)儲(chǔ)存的地方,samplePattern則依據(jù)樣本的名字來(lái)缴川,pheno_data則指明了樣本數(shù)據(jù)的關(guān)系茉稠,這個(gè)里面第一列樣本名需要和ballgown下面的文件夾的樣本名一樣,不然會(huì)報(bào)錯(cuò)

10.濾掉低豐度的基因

# 這里濾掉了樣本間差異少于一個(gè)轉(zhuǎn)錄本的數(shù)據(jù)
> bg_chrX_filt=subset(bg_chrX,"rowVars(texpr(bg_chrX))>1",genomesubset=TRUE)

11.確認(rèn)組間有差異的轉(zhuǎn)錄本

2017-07-21更新:實(shí)際上為了確定基因表達(dá)差異是由于某個(gè)變量造成的把夸,我們這邊需要使用剩下的變量進(jìn)行修正而线。Example:我們?yōu)榱吮容^male and female之間的基因表達(dá)差異,這里就需要指定分析參數(shù)為"transcripts"恋日,主變量為"sex"膀篮,修正變量為"population",getFC可以指定輸出結(jié)果顯示組間表達(dá)量的foldchange岂膳。

并且Ballgown的統(tǒng)計(jì)算法基于標(biāo)準(zhǔn)的線性模型誓竿,對(duì)于組內(nèi)數(shù)據(jù)較少(<4)時(shí)較為準(zhǔn)確。這里也可以使用其它的一些軟件例如limma/DESeq/edgeR等谈截。

> result_transcripts=stattest(bg_chrX_filt,feature = "transcript",covariate = "sex",adjustvars = c("population"), getFC=TRUE,meas="FPKM")
> result_transcripts
        feature   id           fc         pval         qval
1    transcript    1  0.941367186 7.353184e-01 9.468599e-01
2    transcript    2  1.207949354 8.668638e-01 9.744055e-01
3    transcript    3  1.013100019 9.920824e-01 9.986659e-01
4    transcript    4  0.387671042 5.233364e-01 9.189906e-01
5    transcript    5  0.615797877 3.324164e-01 9.117015e-01
......

12.確認(rèn)組間有差異的基因

這里指定feature為gene

> result_genes=stattest(bg_chrX_filt,feature = "gene",covariate = "sex",adjustvars = c("population"), getFC=TRUE,meas="FPKM")
> result_genes
     feature           id          fc         pval         qval
1       gene      MSTRG.1 1.114999374 7.305975e-01 9.218157e-01
2       gene     MSTRG.10 1.749747142 2.767538e-01 7.922755e-01
3       gene   MSTRG.1000 1.399358968 6.039065e-01 8.945639e-01
4       gene   MSTRG.1002 0.937668743 8.825216e-01 9.816878e-01
5       gene   MSTRG.1003 1.044840944 6.155345e-01 8.977043e-01
6       gene   MSTRG.1004 1.220626116 4.160214e-01 8.388688e-01
.....

13.對(duì)結(jié)果 result_transcripts增加基因名

> result_transcripts=data.frame(geneNames=ballgown::geneNames(bg_chrX_filt),geneIDs=ballgown::geneI Ds(bg_chrX_filt),result_transcripts)
> result_transcripts
          geneNames      geneIDs    feature   id           fc         pval         qval
1                 .      MSTRG.4 transcript    1  0.941367186 7.353184e-01 9.468599e-01
2            PLCXD1      MSTRG.4 transcript    2  1.207949354 8.668638e-01 9.744055e-01
3                 .      MSTRG.4 transcript    3  1.013100019 9.920824e-01 9.986659e-01
4                 .      MSTRG.4 transcript    4  0.387671042 5.233364e-01 9.189906e-01
5                 .      MSTRG.5 transcript    5  0.615797877 3.324164e-01 9.117015e-01
6            PLCXD1      MSTRG.4 transcript    6  0.630018786 2.938396e-01 9.002815e-01
......

14.按照P值排序(從小到大)

> result_transcripts=arrange(result_transcripts,pval)
> result_genes=arrange(result_genes,pval)

15.把結(jié)果寫入csv文件

> write.csv(result_transcripts, "chrX_transcript_results.csv",row.names=FALSE)
> write.csv(result_genes, "chrX_gene_results.csv",row.names=FALSE)

16.篩選出q值小于0.05的transcripts和genes筷屡,也就是在性別間表達(dá)有差異的基因了涧偷。

注:這里無(wú)需過(guò)分關(guān)注geneIDs以及transcript name,實(shí)際上那個(gè)是stringtie在比對(duì)過(guò)程中賦予的一個(gè)符號(hào)毙死。

> subset(result_transcripts,result_transcripts$qval<0.05)
   geneNames   geneIDs    feature   id          fc         pval         qval
1          . MSTRG.531 transcript 1657 0.030820591 1.427864e-10 2.082377e-07
2       XIST MSTRG.531 transcript 1656 0.003014576 1.860927e-10 2.082377e-07
3          . MSTRG.531 transcript 1655 0.016144997 3.762791e-10 2.807042e-07
4          . MSTRG.531 transcript 1658 0.028308029 6.599039e-08 3.692163e-05
5       TSIX MSTRG.530 transcript 1654 0.078461818 1.690716e-06 7.567643e-04
6          . MSTRG.613 transcript 1848 7.391342987 1.249275e-05 4.659796e-03
7          . MSTRG.141 transcript  421 3.204058932 2.729898e-05 8.727874e-03
8          . MSTRG.618 transcript 1852 9.136857610 4.804244e-05 1.343987e-02
9          . MSTRG.777 transcript 2338 0.127674288 1.000751e-04 2.488533e-02
10     KDM6A MSTRG.258 transcript  736 0.054212867 1.173824e-04 2.627018e-02
11    PNPLA4  MSTRG.62 transcript  186 0.592778584 2.083496e-04 4.238966e-02
12     RPS4X MSTRG.519 transcript 1611 0.597532121 2.493976e-04 4.651265e-02

> subset(result_genes,result_genes$qval<0.05)
   feature        id          fc         pval         qval
1     gene MSTRG.531 0.002396124 2.469125e-11 2.523446e-08
2     gene MSTRG.141 3.165966412 1.666206e-06 8.514310e-04
3     gene MSTRG.530 0.082749314 7.018439e-06 2.390948e-03
4     gene MSTRG.613 7.314423295 1.128589e-05 2.883544e-03
5     gene MSTRG.618 9.050399157 5.022017e-05 1.026500e-02
6     gene MSTRG.519 0.637382385 6.953432e-05 1.184401e-02
7     gene MSTRG.376 0.620693674 1.134561e-04 1.656458e-02
8     gene  MSTRG.62 0.600686117 1.638615e-04 2.093330e-02
9     gene MSTRG.777 0.159178288 2.177206e-04 2.472338e-02
10    gene MSTRG.622 7.870447732 3.737270e-04 3.527295e-02
11    gene MSTRG.778 0.127712244 3.796501e-04 3.527295e-02
12    gene MSTRG.229 1.412379185 4.200674e-04 3.577574e-02
13    gene  MSTRG.48 4.158987103 5.279898e-04 4.150812e-02

17.數(shù)據(jù)可視化之顏色設(shè)定

# 賦予調(diào)色板五個(gè)指定顏色
> tropical= c('darkorange', 'dodgerblue','hotpink', 'limegreen', 'yellow')
> palette(tropical)

# 當(dāng)然rainbow()函數(shù)也可以完成這個(gè)任務(wù)
> palette(rainbow(5))

18.以FPKM為參考值作圖燎潮,以性別作為區(qū)分條件

# 提取FPKM值
> fpkm = texpr(bg_chrX,meas="FPKM")

#方便作圖將其log轉(zhuǎn)換,+1是為了避免出現(xiàn)log2(0)的情況
> fpkm = log2(fpkm+1)

# 作圖
> boxplot(fpkm,col=as.numeric(pheno_data$sex),las=2,ylab='log2(FPKM+1)')

結(jié)果如下:

FPKM, male in blue, females in orange

19.就單個(gè)轉(zhuǎn)錄本的查看在樣品中的分布

> ballgown::transcriptNames(bg_chrX)[12]
         12 
"NR_027232" 
> ballgown::geneNames(bg_chrX)[12]
         12 
"LINC00685" 

# 繪制箱線圖
> plot(fpkm[12,] ~ pheno_data$sex, border=c(1,2),
+      main=paste(ballgown::geneNames(bg_chrX)[12],' : ',
+                 ballgown::transcriptNames(bg_chrX)[12]),pch=19, xlab="Sex",
+      ylab='log2(FPKM+1)')
> points(fpkm[12,] ~ jitter(as.numeric(pheno_data$sex)),
+        col=as.numeric(pheno_data$sex))

結(jié)果如下:

transcript

20.查看某一基因位置上所有的轉(zhuǎn)錄本

# plotTranscripts函數(shù)可以根據(jù)指定基因的id畫出在特定區(qū)段的轉(zhuǎn)錄本
# 可以通過(guò)sample函數(shù)指定看在某個(gè)樣本中的表達(dá)情況扼倘,這里選用id=1750, sample=ERR188234
> plotTranscripts(ballgown::geneIDs(bg_chrX)[1750], bg_chrX, main=c('Gene MSTRG.575 in sample ERR188234'), sample=c('ERR188234'))

結(jié)果如下:


21.以性別為區(qū)分查看基因表達(dá)情況

# 這里以id=575的基因?yàn)槔▽?duì)應(yīng)上一步作圖)
> plotMeans('MSTRG.575', bg_chrX_filt,groupvar="sex",legend=FALSE)

結(jié)果如下:

MSTRG.575

臨終討論

  • 關(guān)于時(shí)間的使用:針對(duì)chrX的數(shù)據(jù)量的比對(duì)和組裝跟啤,在PC上可以40min內(nèi)搞定,可以說(shuō)是比較快的了唉锌。作者論述如果將12個(gè)樣本的全數(shù)據(jù)下下來(lái)做分析的話,8核&8G內(nèi)存的配置花費(fèi)12.5h可以搞定比對(duì)竿奏,花費(fèi)8h可以搞定組裝和表達(dá)分析袄简。

  • RNA_seq的比對(duì)情況一覽


  • 轉(zhuǎn)錄組組裝情況一覽


  • 其實(shí)這篇文章說(shuō)到底還是在講方法論,它只負(fù)責(zé)上游的數(shù)據(jù)處理到可以分析的一步泛啸,下游的分析和可視化還需要依賴自身的實(shí)驗(yàn)設(shè)計(jì)和研究目的绿语。

  • 官方給出的方案是:stringtie處理得到的數(shù)據(jù)是直接呈遞給ballgown進(jìn)行差異分析和可視化作圖,但是我還不是很清楚輸出文件是否可以無(wú)差別的被其它軟件使用候址。(我也是菜鳥)

  • RNA-seq的文章其實(shí)很多吕粹,也不是非要走這個(gè)pipeline。另外我覺(jué)得ballgown的作圖其實(shí)也沒(méi)有很elegant岗仑,org


參考文獻(xiàn)

Pertea M, Kim D, Pertea G M, et al. Transcript-level expression analysis of RNA-seq experiments with HISAT, StringTie and Ballgown[J]. Nature protocols, 2016, 11(9): 1650-1667.


日常Bob鎮(zhèn)樓
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匹耕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荠雕,更是在濱河造成了極大的恐慌稳其,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炸卑,死亡現(xiàn)場(chǎng)離奇詭異既鞠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盖文,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門嘱蛋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人五续,你說(shuō)我怎么就攤上這事洒敏。” “怎么了返帕?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵桐玻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荆萤,道長(zhǎng)镊靴,這世上最難降的妖魔是什么铣卡? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮偏竟,結(jié)果婚禮上煮落,老公的妹妹穿的比我還像新娘。我一直安慰自己踊谋,他們只是感情好蝉仇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殖蚕,像睡著了一般轿衔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睦疫,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天害驹,我揣著相機(jī)與錄音,去河邊找鬼蛤育。 笑死宛官,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓦糕。 我是一名探鬼主播底洗,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咕娄!你這毒婦竟也來(lái)了亥揖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谭胚,失蹤者是張志新(化名)和其女友劉穎徐块,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灾而,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胡控,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旁趟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昼激。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锡搜,靈堂內(nèi)的尸體忽然破棺而出橙困,到底是詐尸還是另有隱情,我是刑警寧澤耕餐,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布凡傅,位于F島的核電站,受9級(jí)特大地震影響肠缔,放射性物質(zhì)發(fā)生泄漏夏跷。R本人自食惡果不足惜哼转,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望槽华。 院中可真熱鬧壹蔓,春花似錦、人聲如沸猫态。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亲雪。三九已至勇凭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間义辕,已是汗流浹背套像。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留终息,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓贞让,卻偏偏與公主長(zhǎng)得像周崭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喳张,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容