1. 程式人生 > 其它 >lncRNA實戰專案-第五步-差異表達的mRNA和lncRNA

lncRNA實戰專案-第五步-差異表達的mRNA和lncRNA

上一步驟得到了表達矩陣,兩個樣本分別是F_1yr.OC和M_1yr.OC, 所以接下來的差異分析就是比較1歲獼猴腦OC區域女性和男性的差別,差異分析的分析方法很多,主要根據前面標準化的方法,有基於counts的差異分析,也有基於標準化後的FPKM,TPM等的差異分析。 常見的R包有(摘自https://github.com/jmzeng1314/my-R/tree/master/DEG_scripts): edgeR (Robinson et al., 2010) DESeq / qDESeq2 (Anders and Huber, 2010, 2014) DEXSeq (Anders et al., 2012) limmaVoom Cuffdiff / Cuffdiff2 (Trapnell et al., 2013) PoissonSeq baySeq 作業裡給的參考是一步法差異分析,是對常見的R包做了下封裝,包括了對轉錄組的raw counts資料分析DEseq2包和edgeR包,及對於晶片等normalization好的表達矩陣資料的limma和t.test等。用的時候只要設定好表達矩陣和分組矩陣,然後選擇特定的方法,一步就可以進行差異分析。

但是這裡的樣本是無生物學重複的,無重複的資料做差異分析是一件很麻煩的事,可靠性都不能保證。。。但是目前由於測序的價格,還有樣本自身的珍貴稀缺性,部分實驗設計仍然是沒有生物學重複的。對於無重複樣本的差異分析有幾種方法可以選擇,如edgeR,DEGseq和GFOLD等。下面分別嘗試edgeR,DEGseq及GFOLD:

edgeR做無重複樣本的差異分析

edgeR針對無重複樣本給出了四條建議,第一條建議是僅分析MDS plot和fold changes,不做顯著性分析;第二條建議是設定合適的離散度值,然後做個exactTest 或glmFit;第三條看不懂;第四條建議是基於大量的穩定的參照轉錄本。

###下載安裝edgeR包
#source("http://bioconductor.org/biocLite.R")
#biocLite("edgeR")
library("edgeR")
library('ggplot2')

###讀取資料
setwd("G:/My_exercise/edgeR")
rawdata <- read.table("hisat_matrix.out",header=TRUE,row.names=1,check.names = FALSE)
head(rawdata)
#重新命名列名
names(rawdata) <- c("F.1yr.OC.count","M.1yr.OC.count")
#進行分組
group <- factor(c("F.1yr.OC.count","M.1yr.OC.count"))

###過濾與標準化
y <- DGEList(counts=rawdata,genes=rownames(rawdata),group = group)
###TMM標準化
y<-calcNormFactors(y)
y$samples
###推測離散度,根據經驗設定,若樣本是人,設定bcv = 0.4,模式生物設定0.1.(這裡沒有經驗,我就多試幾個)
#bcv <- 0.1
bcv <- 0.2
#bcv <- 0.4
et <- exactTest(y, dispersion=bcv^2)
topTags(et)
summary(de <- decideTestsDGE(et))
###圖形展示檢驗結果
png('F_1yr.OC-vs-M_yrM.OC.png')
detags <- rownames(y)[as.logical(de)];
plotSmear(et, de.tags=detags)
abline(h=c(-4, 4), col="blue");
dev.off()

###匯出資料
DE <- et$table
DE$significant <- as.factor(DE$PValue<0.05 & abs(DE$logFC) >1)
write.table(DE,file="edgeR_all2",sep="t",na="NA",quote=FALSE)
write.csv(DE, "edgeR.F-vs-M.OC2.csv")

#DE2 <- topTags(et,20000)$table
#DE2$significant <- as.factor(DE2$PValue<0.05 & DE2$FDR<0.05 & abs(DE2$logFC) >1)
#write.csv(DE2, "F_1yr.OC-vs-M_1yr.OC3.csv")

edgeR

DEGseq對無重複樣本差異分析

也有推薦DEGSeq 中MARS方法的(MARS: MA-plot-based method with Random Sampling model)。

## 1.安裝DEGseq
source("https://bioconductor.org/biocLite.R")
biocLite("DEGseq")
library("DEGseq")
setwd("G:/My_exercise/DEG/")
#讀入資料,每組樣本構建單獨一個矩陣
matrix1 <- readGeneExp(file="hisat_matrix.out", geneCol=1, valCol=2)
matrix2 <- readGeneExp(file="hisat_matrix.out", geneCol=1, valCol=3)
DEGexp(geneExpMatrix1=matrix1, geneCol1=1, expCol1=2, groupLabel1="F_1yr.OC",
               geneExpMatrix2=matrix2, geneCol2=1, expCol2=2, groupLabel2="M_1yr.OC",
               method="MARS", outputDir="G:/My_exercise/DEG/")

MA.plot

GFOLD對無重複樣本進行差異分析

該軟體稱尤其適合做無重複樣本的差異分析,他對foldchange 的計算考慮到posterior distribution,即克服了pvalue評估顯著性的缺點,同時也克服了 fold change 在評估低counts 數的gene時的缺點。

下載軟體:
wget https://bitbucket.org/feeldead/gfold/get/e78560195469.zip
unzip e78560195469.zip
cd feeldead-gfold-e78560195469 
#檢視REDEME安裝說明

安裝GFOLD時,需要先安裝gsl,然後再編譯安裝gfold。

#安裝gsl
wget ftp://ftp.gnu.org/gnu/gsl/gsl-2.4.tar.gz
tar zxf gsl-2.4.tar.gz
cd gsl-2.4
./configure
make 
make install
#檢視幫助文件
cd doc/
firefox gfold.html &
該軟體的功能包括5部分:

1)Count reads and rank genes; 2)Count reads; 3)Identify differentially expressed genes without replicates; 4)Identify differentially expressed genes with replicates; 5)Identify differentially expressed genes with replicates only in one condition. 下面是無重複樣本計算差異的例子:

對於前面得到的counts列表(hisat_matrix.out)每個樣本單獨分開,並命名為samplename.read_cnt(一定要加字尾.read_cnt).

awk '{print $1,$2}' OFS='t' hisat_matrix.out >F.OC.read_cnt
awk '{print $1,$3}' OFS='t' hisat_matrix.out >M.OC.read_cnt

這裡檢視下F.OC.read_cnt是否有標頭檔案,若有最好註釋掉,否則後面差異結果有錯位。然後用gfold diff 一步就可以求出差異基因。輸出檔案包含4列,第一列GeneID, 第二列是gfold值,gfold值的正負對應著基因的上調和下調,gfold=0認為是無差異的,E-FDR對無重複樣本總是1,第四列是log2fold change。

gfold diff -s1 F.OC -s2 M.OC -suf .read_cnt -o F_M.OC.diff
awk '{if($2>0 && $3=1) print $0}' F_M.OC.diff OFS='t' > up_diff.gene
awk '{if($2<0 && $3=1) print $0}' F_M.OC.diff  OFS='t' > down_diff.gene
#篩選差異倍數為2
awk '{if($2>1 && $3=1) print $0}' F_M.OC.diff OFS='t' > up_diff.gene_2
awk '{if($2<-1 && $3=1) print $0}' F_M.OC.diff  OFS='t' > down_diff.gene_2

上調基因:4324,下調基因:4240,差異變化閾值設定gfold為1時,上調的基因有83個,下調有97個。

差異基因初步統計

用edgeR共篩選到1322個差異顯著基因(篩選條件:PValue<0.05 & abs(logFC) >1); 用DEGseq共篩選到743個差異顯著基因(篩選條件:abs(log2(Fold_change) normalized ) >1 & p-value < 0.05 & q-value(Storey et al. 2003) <0.05 & Signature(p-value < 0.001)=TRUE), 用GFOLD共篩選到180個差異基因(gfold>1 && gfold<-1,E- FDR=1)。其中gfold篩選到的180個基因全部包含在edgeR和DEGSeq中,edgeR和DEGseq篩選到顯著差異基因共有720個基因重合。


參考資料:

一步法差異分析:https://github.com/jmzeng1314/my-R/tree/master/DEG_scripts 從零開始學轉錄組(7):差異基因表達分析 從零開始學轉錄組(8):富集分析 RNA-seq專案設計:生物學重複和單個樣本測序量對結果的影響 clusterProfiler參考文件 差異基因分析 文獻:Efficient experimental design and analysis strategies for the detection of differential expression using RNA-Sequencing

編輯:jimmy