无参转录组差异表达分析(重点火山图)

拿到表达矩阵之后,首先构建dds。

library(limma)
library(ggplot2)
library(DESeq2)
library(pheatmap)
options(stringsAsFactors = F)
raw_count <- read.table('matrix.counts.matrix', header = T,sep = '\t')
a<- raw_count[,-1]    #删掉第一列
count_data <- a[,-4:-6]  #我删掉了第4到6列,根据自己的数据来
exprSet=apply(count_data,2, as.integer)   #把所有数据转化为整数,因为他只认整数
rownames(exprSet)=raw_count[,1]
condition <- factor(c("trt","trt","trt","untrt","untrt","untrt"))  
col_data <- data.frame(row.names = colnames(exprSet), condition)
dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = col_data,design = ~ condition)
dds_filter <- dds[ rowSums(counts(dds))>1, ]   #去掉表达量小于1的基因
dds_out <- DESeq(dds_filter)   #计算差异表达的基因数目
res <- results(dds_out)
summary(res)  #查看结果
差异表达结果

可以看到有2053的上调基因,有2129的下调基因以及140624的低表达的基因。这三个数据就是我们后续画火山图需要的前景基因和背景基因。

以上代码画其他图都会用到,主要是构建dds,挑选差异表达基因,供后续分析。
一:画几个图直观的看一下差异表达情况

rld <- rlogTransformation(dds_out)
exprSet_new=assay(rld)
par(cex = 0.7)
n.sample=ncol(exprSet)
if(n.sample>40) par(cex = 0.5)
cols <- rainbow(n.sample*1.2)
par(mfrow=c(2,2))
boxplot(exprSet, col = cols,main="exprSet_expression value",las=2)
boxplot(exprSet_new, col = cols,main="exprSet_new_expression value",las=2)
hist(exprSet)
hist(exprSet_new)

箱线图

二:MAplot

plotMA(res, ylim = c(-10,10))
topGene <- rownames(res)[which.min(res$padj)]
with(res[topGene, ], {
  
  points(baseMean, log2FoldChange, col="dodgerblue", cex=2, lwd=2)
  
  text(baseMean, log2FoldChange, topGene, pos=2, col="dodgerblue")
  
})
MAplot

三:pheatmap
1.0

table(res$padj<0.05)    ##看一下p小于0.05的有多少
res_deseq <- res[order(res$padj),]
res_deseq=as.data.frame(res_deseq)
nrDEG=res_deseq
nrDEG=na.omit(res_deseq)   ##去掉NA
choose_gene=head(row.names(nrDEG),50)  ##画top50的gene
choose_matrix=exprSet[choose_gene,]
choose_matrix=t(scale(t(choose_matrix)))
pheatmap(choose_matrix,cluster_row = T)

pheatmap

2.0

rld <- rlogTransformation(dds_out,blind = F)
write.csv(assay(rld),file="JSM.DESeq2.pseudo.counts.csv")
topVarGene <- head(order(rowVars(assay(rld)),decreasing = TRUE),50)
mat  <- assay(rld)[ topVarGene, ]
anno <- as.data.frame(colData(rld)[,c("condition","sizeFactor")])
pheatmap(mat, annotation_col = anno, cluster_cols = T)
pheatmap

四:volcano-ggplot

resLFC <- lfcShrink(dds_out,coef = 2,res=res)
write.csv(resLFC, file ="mm_deseq2_resLFS.csv" )

到这一步以及生产了我们花火山图所需要的差异表达基因文件(mm_deseq2_resLFS.csv),查看一下这个文件:


csv文件

可以看到这个csv文件是包含7列,但是我们画画火山图需要上调下调和既不上调也不下调的基因,所以我们就需要这个文件中的1(gene_id),3(log2FoldChange),7(padj)列,并且要把7列中的NA删掉,至于这三列代表的什么意思,自己去查。
到Linux中运行如下代码:

##########################切记##########################
##########################切记##########################
你要看你的csv文件的分割符是什么,我也是看了好久才明白下面这串代码:

  1. 要是你的csv文件时以","分割,这下面这串代码的-F 要用‘,’.我的就是以‘,’分割的。
  2. 要是你的csv文件是以‘\t’分割的话,切记-F要用‘\t’.不然这串代码只会删掉表头,数据不会删掉的哦,因为他没法识别你是以什么分割的。
perl -F',' -alne '$F[5]=~s/\r//;if(/baseMean/){print "gene\tlog2FoldChange\tpadj\tsignificant"} else{unless(/NA/){if($F[2] >=1 && $F[5]<0.05){print "$F[0]\t$F[2]\t$F[5]\tup"} elsif($F[2]<=-1 && $F[5]<0.05){print "$F[0]\t$F[2]\t$F[5]\tdown"} else{print "$F[0]\t$F[2]\t$F[5]\tno"}}}' mm_deseq2_resLFS.csv >volcano.txt

最后就会生成如下的包含4列的文件,这个文件就是我们画火山图的东西。


火山图所需要的差异表达基因

再到R中跑如下代码:

data <-read.table(file="volcano.txt",header = TRUE,sep = '\t')
volcano <-ggplot(data = data,aes(x=log2FoldChange,y= -1*log10(padj)))+geom_point(aes(color=significant))+scale_color_manual(values = c("red","grey","blue")) + labs(title="Volcano_Plot",x=expression((log[2](FC)), y=expression(-log[10](padj)) ))+geom_hline(yintercept=1.3,linetype=4)+geom_vline(xintercept=c(-1,1),linetype=4)
volcano

最后看一下生成的图片:


volcano-ggplot

是不是还阔以??

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容