前言
這次給大家?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上閱讀量最大的文章。
當(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:
- alignment of the reads to the genome
- assembly the alignments into full-length transcripts
- quantification of the differencesin expression levels of each gene and transcript
- calculation of the differences in expression for all genes among the different conditions
這個(gè)protocol首先從原始RAN-seq數(shù)據(jù)入手捉捅,輸出數(shù)據(jù)包括基因list冶匹,轉(zhuǎn)錄本习劫,及每個(gè)樣本的表達(dá)量,能夠表現(xiàn)差異表達(dá)基因的表格并完成顯著性的計(jì)算嚼隘。
- 第一步是使用HISAT將讀段匹配到參考基因組上,使用者可以提供注釋文件诽里,但HISAT依舊會(huì)檢測(cè)注釋文件沒(méi)有列出來(lái)的剪切位點(diǎn)
- 第二步,比對(duì)上的reads將會(huì)被呈遞給StringTie進(jìn)行轉(zhuǎn)錄本組裝飞蛹,StringTie單獨(dú)的對(duì)每個(gè)樣本進(jìn)行組裝须肆,在組裝的過(guò)程中順帶估算每個(gè)基因及isoform的表達(dá)水平
- 第三步,所有的轉(zhuǎn)錄本都被呈遞給StringTie的merge函數(shù)進(jìn)行merge桩皿,這一步是必須的,因?yàn)橛行颖镜霓D(zhuǎn)錄本可能僅僅被部分reads覆蓋幢炸,無(wú)法被第二步的StringTie組裝出來(lái)泄隔。merge步驟可以創(chuàng)建出所有樣本里面都有的轉(zhuǎn)錄本,方便下一步的對(duì)比
- merge的數(shù)據(jù)再一次被呈遞給StringTie宛徊,StringTie可以利用merge的數(shù)據(jù)重新估算轉(zhuǎn)錄本的豐度佛嬉,還能額外的提供轉(zhuǎn)錄本reads數(shù)量的數(shù)據(jù)給下一步的ballgown
- 最后一步: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è)率
由于在實(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。下圖的例子可以幫助理解荣恐。
如圖所示魁莉,四個(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ù):
sample文件夾下有12個(gè)fastq格式的paired-end RNA-seq文件鳖链,從兩地人群中(英格蘭島住民和約魯巴住民)各取六個(gè)樣,六個(gè)樣又分為男女性別各三個(gè)(最少的生物學(xué)重復(fù))墩莫。
隨后介紹一個(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文件
當(dāng)然HISAT2已經(jīng)為各位老爺準(zhǔn)備好了常見(jiàn)基因組的index文件和genes文件芙委。
點(diǎn)我
genome文件夾下包含這染色體X的序列文件(GRCh38 build 81)
genes文件夾下則包含著針對(duì)基因組的注釋文件(來(lái)自于RefSeq數(shù)據(jù)庫(kù))
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é)果如下:
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é)果如下:
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é)果如下:
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é)果如下:
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é)果如下:
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é)果如下:
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é)果如下:
臨終討論
關(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.