edgeR的介紹
背景
RNA-seq表達譜與生物復制的差異表達分析。 實現一系列基於負二項分布的統計方法,包括經驗貝葉斯估計,精確檢驗,廣義線性模型和准似然檢驗。 與RNA-seq一樣,它可用於產生計數的其他類型基因組數據的差異信號分析,包括ChIP-seq,Bisulfite-seq,SAGE和CAGE。
簡介
edgeR包是進行RNA-seq數據分析非常常用的一個R包。該包需要輸入每個基因關於每個樣本的reads數的數據,每行對應一個基因,每一列對應一個樣本。edgeR作用的是真實的比對統計,因此不建議用預測的轉錄本。
歸一化原因:
技術原因影響差異表達分析:
1)Sequencing depth:統計測序深度(即代表的是library size);
2)RNA composition:個別異常高表達基因導致其它基因采樣不足
3)GC content: sample-specific effects for GC-content can be detected
4)sample-specific effects for gene length have been detected
注意:edgeR必須是原始表達量,而不能是rpkm等矯正過的。
1.讀取表達矩陣文件
>SFTSV_24vscontrol_circ<-read.table("edgeR_TPM_SFTSV_24vscontrol_circ.txt",header= T,stringsAsFactors = F)[,1:8] #讀取基因表達量數據矩陣,包含6列樣本(可分為C1和D1兩組,每組各3個樣本)共計1031行基因。
2.構建分組變量
分為control組和SFTSV_24組,每組都為三個重復
>group<-c(rep("control",3),rep("SFTSV_24",3))
3.構建DGElist對象
這里因為已經有rawdata的count文件,因此直接用DGEList()函數就行了,否則要用readDGE()函數
DGEList對象主要有三部分:
1、counts矩陣:包含的是整數counts;
2、samples數據框:包含的是文庫(sample)信息。一共有4列,第一列為每個組的組名,第二列為group列,是上面構建的分組變量,第三列是lib.size列,如果不自定義lib.size,lib.size為每組記錄的count之和,第四列為norm.factors列。
3、一個可選的數據框genes:gene的注釋信息
###由於這里記錄的是circRNA的back-spliced junction reads,這里的數據是取所有樣本的circRNA的交集,所以這里的lib.size需要重新設定,設置為最開始的每個樣本中所有circRNA的count之和###
>y<-DGEList(count=SFTSV_24vscontrol_circ[,3:8],group=group,genes=SFTSV_24vscontrol_circ[,1:2],lib.size = c(48843,35329,48667,31309,35582,40933)) #這里重新設置了lib.size
4.過濾和標准化
過濾:因為這里記錄的是circRNA的count數,已經在分析的過程中過濾過,所以這里不進行數據的過濾。
如果是mRNA或者lncRNA的count數,需要對其的表達量進行過濾。對於在大多數樣本中表達數量都很少的基因,需要進行過濾,這一步可以根據自己定義的標准過濾,edgeR推薦使用該包的CPM( count-per-million )值進行過濾,命令:
>keep <- rowSums(cpm(y)>1) >= 2#至少在兩個樣本里cpm大於1 >y <- y[keep, , keep.lib.sizes=FALSE]
標准化:edgeR的標准化思想主要針對的是不同樣本在建庫時效應。這一點與RPKM不同,因為edgeR認為不同的基因對於所有樣本的影響是相同的,所以不必考慮。因此為了消除這種建庫時的效應,edgeR會更推薦你使用他的calcNormFactors函數,算出來的值叫做trimmed mean of M-values (TMM) ,命令為:
>y <- calcNormFactors(y) >y$samples
>plotMDS(y) #這里主要是通過圖形的方式來展示實驗組與對照組樣本是否分得開,以及同一組內樣本是否能聚的比較近,即重復樣本是否具有一致性
5.估計離散度
> y <- estimateCommonDisp(y, verbose=TRUE) > y <-estimateTagwiseDisp(y) > plotBCV(y)
6.通過檢驗差異來鑒別差異表達基因
>et <- exactTest(y)
>top <- topTags(et) #這里可以設置topTags函數的參數,輸入?topTags可以查看topTags的詳細用法,可以設置參數n來調整顯示的條目,默認是n=10,可以通過設置sort.by="logFC"來按照|logFC|的降序排序,設置p.value=0.05來篩選p-adjusted value<0.05的基因
7.篩選差異基因與基本統計
>summary(de <- decideTestsDGE(et,adjust.method = "BH", p.value = 0.05,lfc=1)) #默認的參數是adjust.method="BH",也可以設置為adjust.method="fdr",BH和fdr是等價的,p.value=0.05也是默認的參數,指的是篩選FDR小於0.05的基因,這里也可以設置lfc參數,默認的lfc為lfc=0,也可以根據自己需要設置,更多的函數參數可以輸入?decideTestsDGE查看