limma媒咳、DESeq2粹排、edgeR差異分析及繪制韋恩圖

不同的時(shí)空以及不同的條件下差異基因分析是RNAseq分析的重要目標(biāo)。
差異表達(dá)分析方法包括:
基于Read數(shù)目:DESeq涩澡、limma和edgeR顽耳;
基于組裝技術(shù):Cuffdif和Ballgown;
基于免比對的定量方法(kallisto、Salmon射富、Salfish):sleuth膝迎。

安裝packages

if(!requireNamespace("BiocManager",quietly = TRUE))
 install.packages("BiocManager")
 BiocManager::install("DESeq2")
 BiocManager::install("edgeR")
 BiocManager::install("limma")
 BiocManager::install("Rgraphviz") 好像沒用到這個(gè)包誒

整理矩陣

用的是rsem的count文件

data<-read.table("~/rnaseq/rsem_out/input_data",sep="\t",header=TRUE,row.names=1,col.names=c("name","exp1","exp2","exp3","exp4","exp5","exp6","exp7","exp8","exp9","exp10","ctl1","ctl2","ctl3","ctl4","ctl5","ctl6","ctl7"))
data<-round(data,digits=0)
data<-as.matrix(data) 
exp=data
group_list<-factor(c(rep("exp",10),rep("ctl",7)))
coldata<-data.frame(row.name=colnames(exp),condition=group_list)

差異分析

DESeq2

library(DESeq2)
dds<- DESeqDataSetFromMatrix(countData=data,colData=coldata,design=~condition)
dds<-DESeq(dds)
res <- results(dds,contrast = c("condition",rev(levels(group_list))))
resOrdered<-res[order(res$pvalue),]
DEG<-as.data.frame(resOrdered)
head(DEG)
#DEG<-na.omit(DGE)   這里不確定要不要去掉NA值
#添加change列標(biāo)記基因上調(diào)下調(diào)
logFC_cutoff <- with(DEG,mean(abs(log2FoldChange)) + 2*sd(abs(log2FoldChange)) )
logFC_cutoff =1
k1 = (DEG$pvalue < 0.05)&(DEG$log2FoldChange < - logFC_cutoff)
k2 = (DEG$pvalue < 0.05)&(DEG$log2FoldChange > logFC_cutoff)
DEG$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))
table(DEG$change)
head(DEG)
DESeq2_DEG <- DEG
write.csv(DESeq2_DEG,file = "~/rnaseq/deseq_out/DESeq2_DEG.csv")
查看導(dǎo)出的DESeq2_DEG.csv

edgeR

library(edgeR)
dge <- DGEList(counts=exp,group=group_list)
dge$samples$lib.size <- colSums(dge$counts)
dge <- calcNormFactors(dge) 
design <- model.matrix(~0+group_list)
rownames(design)<-colnames(dge)
colnames(design)<-levels(group_list)
dge <- estimateGLMCommonDisp(dge,design)
dge <- estimateGLMTrendedDisp(dge, design)
dge <- estimateGLMTagwiseDisp(dge, design)
fit <- glmFit(dge, design)
fit2 <- glmLRT(fit, contrast=c(-1,1)) 
DEG=topTags(fit2, n=nrow(exp))
DEG=as.data.frame(DEG)
logFC_cutoff <- with(DEG,mean(abs(logFC)) + 2*sd(abs(logFC)) )
logFC_cutoff =1
k1 = (DEG$PValue < 0.05)&(DEG$logFC < -logFC_cutoff)
k2 = (DEG$PValue < 0.05)&(DEG$logFC > logFC_cutoff)
DEG$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))
head(DEG)
table(DEG$change)
edgeR_DEG <- DEG
write.csv(edgeR_DEG,file = "~/rnaseq/edgeR_out/edgeR_DEG.csv")

limma

library(limma)
design <- model.matrix(~0+group_list)
colnames(design)=levels(group_list)
rownames(design)=colnames(exp)
dge <- DGEList(counts=exp)
dge <- calcNormFactors(dge)
v <- voom(dge,design, normalize="quantile")
fit <- lmFit(v, design)
constrasts = paste(rev(levels(group_list)),collapse = "-")
cont.matrix <- makeContrasts(contrasts=constrasts,levels = design) 
fit2=contrasts.fit(fit,cont.matrix)
fit2=eBayes(fit2)
DEG = topTable(fit2, coef=constrasts, n=Inf)
DEG = na.omit(DEG)
logFC_cutoff <- with(DEG,mean(abs(logFC)) + 2*sd(abs(logFC)) )
logFC_cutoff=1
k1 = (DEG$P.Value < 0.05)&(DEG$logFC < -logFC_cutoff)
k2 = (DEG$P.Value < 0.05)&(DEG$logFC > logFC_cutoff)
DEG$change = ifelse(k1,"DOWN",ifelse(k2,"UP","NOT"))
table(DEG$change)
head(DEG)
limma_voom_DEG <- DEG
write.csv(limma_voom_DEG,file = "~/rnaseq/limma_out/limma_voom_DEG.csv")

分別得到三款軟件計(jì)算的上調(diào)、下調(diào)以及既不上調(diào)也不下調(diào)的基因數(shù)

tj = data.frame(deseq2 = as.integer(table(DESeq2_DEG$change)),
                edgeR = as.integer(table(edgeR_DEG$change)),
                limma_voom = as.integer(table(limma_voom_DEG$change)),
            row.names = c("down","not","up")
);
tj

繪制韋恩圖

UP=function(df){
  rownames(df)[df$change=="UP"]
}
DOWN=function(df){
rownames(df)[df$change=="DOWN"]
}
up = intersect(intersect(UP(DESeq2_DEG),UP(edgeR_DEG)),UP(limma_voom_DEG))
write.csv(up,file="./up.csv")
up
down= intersect(intersect(DOWN(DESeq2_DEG),DOWN(edgeR_DEG)),DOWN(limma_voom_DEG))
write.csv(down,file="./down.csv")
down

上調(diào)基因畫維恩圖

up_DESeq2<-UP(DESeq2_DEG)
write.csv(up_DESeq2,file="./up_DESeq2.csv")
up_edgeR<-UP(edgeR_DEG)
write.csv(up_edgeR,file="./up_edgeR.csv")
up_limma_voom<-UP(limma_voom_DEG)
write.csv(up_limma_voom,file="./up_limma_voom.csv")

提前手動(dòng)刪除以下csv文件的序號列

df1<-read.csv("up_limma_voom.csv",header = T,stringsAsFactors = F)
df2<-read.csv("up_edgeR.csv",header = T,stringsAsFactors = F)
df3<-read.csv("up_DESeq2.csv",header = T,stringsAsFactors = F)
library(ggvenn)
x<-list(limma_voom=df1$x,edgeR=df2$x,DESeq2=df3$x)
ggvenn(x,c("limma_voom","edgeR","DESeq2"),set_name_size = 3,fill_alpha = 1,text_size = 3)
上調(diào)

下調(diào)基因畫韋恩圖

down_DESeq2<-DOWN(DESeq2_DEG)
write.csv(down_DESeq2,file="./down_DESeq2.csv")
down_edgeR<-DOWN(edgeR_DEG)
write.csv(down_edgeR,file="./down_edgeR.csv")
down_limma_voom<-DOWN(limma_voom_DEG)
write.csv(down_limma_voom,file="./down_limma_voom.csv")

提前手動(dòng)刪除以下csv文件的序號列

df4<-read.csv("down_limma_voom.csv",header = T,stringsAsFactors = F)
df5<-read.csv("down_edgeR.csv",header = T,stringsAsFactors = F)
df6<-read.csv("down_DESeq2.csv",header = T,stringsAsFactors = F)
library(ggvenn)
x<-list(limma_voom=df4$x,edgeR=df5$x,DESeq2=df6$x)
ggvenn(x,c("limma_voom","edgeR","DESeq2"),set_name_size = 3,fill_alpha = 1,text_size = 3)
下調(diào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胰耗,一起剝皮案震驚了整個(gè)濱河市限次,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柴灯,老刑警劉巖卖漫,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赠群,居然都是意外死亡懊亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門乎串,熙熙樓的掌柜王于貴愁眉苦臉地迎上來店枣,“玉大人,你說我怎么就攤上這事叹誉⊙炝剑” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵长豁,是天一觀的道長钧唐。 經(jīng)常有香客問我,道長匠襟,這世上最難降的妖魔是什么钝侠? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮酸舍,結(jié)果婚禮上帅韧,老公的妹妹穿的比我還像新娘。我一直安慰自己啃勉,他們只是感情好忽舟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淮阐,像睡著了一般叮阅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泣特,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天浩姥,我揣著相機(jī)與錄音,去河邊找鬼状您。 笑死勒叠,一個(gè)胖子當(dāng)著我的面吹牛镀裤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缴饭,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼暑劝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颗搂?” 一聲冷哼從身側(cè)響起担猛,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丢氢,沒想到半個(gè)月后傅联,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚察,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年蒸走,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片貌嫡。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡比驻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岛抄,到底是詐尸還是另有隱情别惦,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布夫椭,位于F島的核電站掸掸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹭秋。R本人自食惡果不足惜扰付,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仁讨。 院中可真熱鬧羽莺,春花似錦、人聲如沸陪竿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族跛。三九已至,卻和暖如春锐墙,著一層夾襖步出監(jiān)牢的瞬間礁哄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工溪北, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桐绒,地道東北人夺脾。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像茉继,于是被迫代替她去往敵國和親咧叭。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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