前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文解决RNA测序资料的差异

一文解决RNA测序资料的差异

作者头像
用户1359560
发布2019-06-15 15:10:53
1.5K0
发布2019-06-15 15:10:53
举报
文章被收录于专栏:生信小驿站生信小驿站

本文目标: (1)使用edger包做TCGA数据库RNA-seq数据差异分析 (2)使用deseq包做TCGA数据库RNA-seq数据差异分析 (3)使用limma包做TCGA数据库RNA-seq数据差异分析 (4)如何在没有生物学重复的情况下(比如说只有两个样本,来求取差异基因)

DESeq2和EdgeR都可用于做基因差异表达分析,主要也是用于RNA-Seq数据,同样也可以处理类似的ChIP-Seq,shRNA以及质谱数据。

这两个都属于R包,其相同点在于都是对count data数据进行处理,都是基于负二项分布模型。因此会发现,用两者处理同一组数据,最后在相同阈值下筛选出的大部分基因都是一样的,但是有一部分不同应该是由于其估计离散度的不同方法所导致的。

edgeR 使用经验贝叶斯估计和基于负二项模型的精确检验来确定差异基因。 特别地,经验贝叶斯用于通过在基因之间来调节跨基因的过度离散程度。 使用类似于Fisher精确检验但适应过度分散数据的精确检验用于评估每个基因的差异表达。edgeR 在默认情况下,执行TMM标准化程序以考虑样本之间的不同测序深度,通过Benjamini-Hochberg用于控制FDR 。

Limma包基于线性模型建模。 它最初设计用于分析微阵列数据,但最近已扩展到RNA-seq数据。 根据limma用户指南的当前建议是使用edgeR包的TMM标准化和“voom”转换,其本质上将标准化数据取对数(基数2)并估计它们的均值 - 方差关系以确定在线性建模之前每次观察的权重。 默认情况下,Benjamini-Hochberg程序用于估计FDR 。

DESeq使用类似于edgeR的负二项式模型,与edgeR类似,执行缩放因子归一化以考虑不同样本的变化的测序深度,并且Benjamini-Hochberg用于控制FDR。 DESeq能够分析具有少量重复的实验。DESeq技术上可以在没有任何生物学重复的情况下进行实验。DESeq2是在DESeq基础上更新的软件。

(1)edgeR包的差异分析代码。

rm(list = ls())
library("DESeq")
library("limma")
library("edgeR")

foldChange=1
padj=0.05



setwd("D:\\train\\diff")                
#读取数据,表达量数据每一列是一个样本,第一列为基因名
rt = read.csv("mRNA_exprSet.csv",sep=",",header=T)  

rt=as.matrix(rt)
rownames(rt)=rt[,1]
exp=rt[,2:ncol(rt)]
dimnames=list(rownames(exp),colnames(exp))
data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
data=avereps(data)
#删除掉表达量较低的基因
data=data[rowMeans(data)>1,]


#构建分组,前60列为正常样本,后63列为肿瘤样本
group =c(rep("normal",60),rep("tumor",63))  
design = factor(group)

design <- model.matrix(~group)
y <- DGEList(counts=data,group=group)
y <- calcNormFactors(y)
y <- estimateCommonDisp(y)
y <- estimateTagwiseDisp(y)
et <- exactTest(y,pair = c("normal","tumor"))
topTags(et)
ordered_tags <- topTags(et, n=100000)

allDiff=ordered_tags$table
allDiff=allDiff[is.na(allDiff$FDR)==FALSE,]
diff=allDiff
newData=y$pseudo.counts

# write.table(diff,file="edgerOut.xls",sep="\t",quote=F)

diffSig = diff[(diff$FDR < padj & (diff$logFC>foldChange | diff$logFC<(-foldChange))),]
write.csv(diffSig, file="edger_diffSig.csv")

# 
# diffUp = diff[(diff$FDR < padj & (diff$logFC>foldChange)),]
# write.table(diffUp, file="edger_up.xls",sep="\t",quote=F)
# diffDown = diff[(diff$FDR < padj & (diff$logFC<(-foldChange))),]
# write.table(diffDown, file="edger_down.xls",sep="\t",quote=F)
# 

(1)DESeq2包的差异分析代码。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)edgeR包的差异分析代码。
  • (1)DESeq2包的差异分析代码。
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档