day51 转录组 DESeq2分析总结

对day49,day50两次学习的总结。
拿到reads表达矩阵后,在自己电脑上用DESeq2这个R包进行数据分析。

一、先要准备表达矩阵和分组表格
1,表达矩阵
count之后的txt文件进行整理,只留下geneid和四个样本列。


image.png

其中有一些行不完整,有NA的数据,在后面读入的时候一定要用fill=TURE参数。

2,分组表格
可以用txt设置分组表格,但是可能是用WPS建立表格,转成txt有格式问题,一直报错:“Error in make.names(col.names, unique = TRUE) :
invalid multibyte string at '<ff><fe>s'
In addition: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 1 appears to contain embedded nulls”
最后解决办法是,转成scv格式,用read.csv 命令读入。group_list一列的列名必须是“group_list”。

image.png

二、在R中编辑,依此运行下面的脚本:

#step1: read counts
rm(list = ls()) #首先清空R中的变量
setwd("/Users/meraner/Documents/bioinfo")
a=read.table('/Users/meraner/Documents/bioinfo/counts2.txt', fill=T, header=T, row.names=1, stringsAsFactors = F) 
a = na.omit(a) #含有NA值的行删除
index1=c(rowSums(a)>0) 
exprSet=a[index1,] 
write.csv(exprSet,'filter_reads_matrix.csv' ) #过滤后的数据保存

说明
由于count文件中可能会有很一些行里面有缺省NA,就是没比对成功的。所以用fill=TURE,即可读入,这些数据显示为NA。在Mac电脑的R里面需要用fill=T啊!不然会报错: object 'TURE' not 。
接着可以删除有NA的行。即用no.omit命令把NA的行去除,避免后面分析中的干扰。这些NA数据的基因名通常都很奇怪,很长一串后续分析有点儿烦,去除更好。
index1为逻辑型。就是计算每一行的和,得到的数大于零就是ture,等于零就是false,再把ture的那些行单独拎出来建立一个expreSet表达框,就是过滤过后的数据,用来进行后面的分析。

#step2: set group & build dds
library(DESeq2)
coldata <- read.csv ('/Users/meraner/Documents/bioinfo/group.csv', row.names=1, stringsAsFactors =T)
group_list=coldata[,1]  #取这一列的数据为变量group_list
colnames(exprSet)<-rownames(coldata) #把表达矩阵的列名重设为简单格式且和coldata里的样本名保持一致
dds <- DESeqDataSetFromMatrix(countData = exprSet, colData = coldata, design = ~group_list)  #这个命令创建DEseqDataSet(dds)。

说明
创建一个数据框coldata,只有一列内容,即分组信息。行名为样本名,顺序必须和前面表达矩阵从左到右的顺序一致。
建立一个变量group_list(名字必须是这个),里面内容就是每个样本的分组信息,顺序必须和前面表达矩阵从左到右的顺序一致。这个变量还必须是一个因子型的。所以用了stringsAsFactors =T。
countData用于说明数据来源,colData用于说明不同组数据的实验操作类型,design用于声明自变量,即谁和谁进行对比

#step3: DEG
dds2 <- DESeq(dds)  
res <- results(dds2,contrast = c("group_list","siSUZ12","con")) 
resOrdered<- res[order(res$padj),]  
DEG=as.data.frame(resOrdered)
write.csv(DEG,file = "treat_vs_con.csv") 
DEGsig <-subset(res, padj < 0.001 & abs(log2FoldChange) > 1)
write.csv(DEGsig,file= "treat_vs_con_sig.csv")

说明
用DESeq命令对dds数据进行运算及分析,共三步:文库大小估计;离散程度估计;统计检验。生成结果文件是按照siSUZ12组vs. con组进行比较的。#order函数是给出从小到大排序后的位置(默认升序), 将结果文件按照res文件中的padj这一列进行降序排列,其中$符号表示res中的padj这一列。再按照自定义阈值提取差异基因。

#step4:normalization matrix
rld <- rlogTransformation(dds2)  ## 得到经过normlization的表达矩阵。
exprSet_new=assay(rld)  #生成归一化的矩阵文件
write.csv(exprSet_new,'Normalized_matrix.csv' ) #导出数据,保存为csv格式。

说明
rlogTransformation是DESeq2包中的一个命令(函数),在help文档中查看,它能把原始含有reads的表达数值,根据整个样本和每个基因的长度等,计算出相对表达。并表示为log2格式,因此最后导出的数据里会有负数。比如-1.7,就是2^(-1.7)=0.3。
assay是SummarizedExperiment包中的函数,可以把阵提取出来。

#step5: visulization
#fig1
hist(exprSet_new)
#fig2
tiff(filename = "exprBOX.tiff",width = 1500, height = 1500, units = "px", res = 150)
par(cex = 1.2) #指定符号的大小
par(mar=c(10, 5, 5, 5))
n.sample=ncol(exprSet) #样本数
if(n.sample>40) par(cex = 0.5)
n.sample=ncol(exprSet)#样本数
cols <- rainbow(n.sample*1.2)
boxplot(exprSet_new, col = cols,main="expression value",las=2)
dev.off()
#fig3
sigGene= read.csv('treat_vs_con_sig.csv',row.names=1) 
for(i in rownames(sigGene)){
  genename=paste(i,sep="") #基因名
  pdf(file=paste(i,'_counts.pdf',sep="")) #以pdf格式输出
  plotCounts(dds2, genename, intgroup = "group_list")
  dev.off() 
}
#fig4
tiff(filename = "PCA.tiff", width = 1500, height = 1500, units = "px", res = 150)
plotPCA(rld, intgroup="group_list")
dev.off()

说明
hist() 用来做直方图(柱形图),应该用归一化的数据来看。
boxplot是用来看每个样本的整体表达水平。
plotCounts是用来看单个感兴趣基因的表达差异
plotPCA用来做PCA聚类分析
生成的图片都保存在工作目录中,就是前面setwd的那个路径。

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

推荐阅读更多精彩内容