edgeR基因表达差异分析

edgeR基因表达差异分析edgeR 基因表达差异分析文章目录 edgeR 基因表达差异分析官方文档总结读取 read 数 DGEList 对象 构建分组过滤 删除低表达基因 CPM 标度转换手动过滤自动过滤归一化测序深度有效库大小 GC 含量基因长度 MDS 图形展示样本无监督聚类负二项式模型计算生物变异系数计算差异基因广义线性模型 Glm 计算离散度计算 DE 基因如果没有重复样本 输出结果查看统计参考 一个比较详细的例子 http www iwhgao com edger E7 AE 80 E5 8D 95 E4 BD BF E7 94 A8

edgeR基因表达差异分析

官方文档总结

注意⚠️:

  • edgeR设计用于实际读取计数。我们不建议将预测的转录本丰度输入到edgeR而不是实际计数中。

读取read数

可以使用read.table(),read.delim(),如果文件比较多,readDGE(files, columns=)来一次性读取多个文件。注意,readDGE()需要指定两列,一列用于计数,一列用于基因标识符

x <- readDGE(files, columns=c(1,3)) 

DGEList对象、构建分组

DGEList是一个可以包含多种内容和统计的列表。DGEList至少需要的元素:countssamples(包含group分组信息和lib.size文库大小),counts用来存放表达矩阵,samples用来标记样本信息和库的大小,group声明组别 。

# 构建一个含有组别标记的DGEList y<- DGEList(counts=x) group <- c(1,1,2,2) y<- DGEList(counts=x,group=group) 

过滤,删除低表达基因

低表达基因不仅用不到,而且会干扰结果,所以要去除在任何样本中都没有足够多的序列片段的基因应该从下游分析中过滤掉,因为:

  1. 低表达没有生物学意义
  2. 去除低表达数据可以对数据中均值-方差关系有更精确的估计
  3. 减少了观察差异表达下游分析中的运算量

edgeR包中的filterByExpr函数提供了自动过滤基因的方法,可保留尽可能多的有足够表达计数的基因。此函数默认选取最小的组内的样本数量为最小样本数,保留至少在这个数量的样本中有10个或更多序列片段计数的基因。
过滤标准是,以最小对组内样本数为标准,(此例最小组内样本为3),如果有基因在所有样本中表达数(count)小于10的个数超过最小组内样本数,就剔除该基因。换算为cpm即cut.off.cpm=10/


CPM标度转换
cpm<- edgeR::cpm(x) lcpm <- edgeR::cpm(x, log=TRUE) 
手动过滤

经验设置为cpm=1位为cutoff点。但是,这并不是最精准。因为随着测序深度增加,例如20million(2 千万),cpm=1 意味着 counts=20。阈值可能会有点高。测序深度低的话,例如2million(2百万),cpm=1 意味着counts=1。阈值可能会太低。此时可以使用自动过滤,或者根据cut.off.cpm=10/

来计算。

cpm(y) keep_cpm <- rowSums(cpm(y)>1) >= 3 #此例设置最小组内样本数为3 x<- x[keep_cpm,,keep.lib.sizes=FALSE] 
自动过滤

使用edgeR::filterByExpr()自动过滤

keep.exprs<- edgeR::filterByExpr(x,group=group) x<- x[keep.exprs,,keep.lib.sizes=FALSE] 

归一化

测序深度

不同文库大小代表不同测序深度。这是基本建模过程的一部分,并自动进入倍数变化或p值计算。它始终存在,不需要任何用户干预

有效库大小
y <- calcNormFactors(y) 

注意⚠️:
归一化并不会直接在counts数值上修改,而是归一化系数会被自动存在x$samples$norm.factors

GC含量
基因长度

因为GC含量和基因长度在每个基因间不会改变,因此这些都是相对的,因此对差异分析影响很小。

MDS图形展示 样本无监督聚类

这种图表使用无监督聚类方法展示出了样品间的相似性和不相似性,能让我们在进行正式的检验之前对于能检测到多少差异表达基因有个大致概念。

# 图形展示 library(RColorBrewer) lcpm <- cpm(y, log=TRUE) col.group <- group levels(col.group) <- brewer.pal(nlevels(col.group), "Set1") col.group <- as.character(col.group) plotMDS(lcpm,labels=group,col=col.group) #或者直接使用 plotMDS(y) 

-w500

负二项式模型

计算生物变异系数
y < -estimateDisp(y) 

或者先计算common离散度,再计算tagwise离散度

y <- estimateCommonDisp(y) y <- estimateTagwiseDisp(y) 
计算差异基因
et<- exactTest(y) topTags(et) 

广义线性模型(Glm)

对于更复杂的实验设计(有多个因素),可以通过广义线性模型来及性能你和。

计算离散度

通过下面来估计common离散度、trended离散度、tagwise离散度。

y<- estimateDisp(y,design) 

或者分开依次进行

y <- estimateGLMCommonDisp(y, design) y <- estimateGLMTrendedDisp(y, design) #估计trended离散度 y <- estimateGLMTagwiseDisp(y, design) 

关于design的构建(?):

#group是区别分组的factor对应不同样本,lane是不同样本的的lane道 design <- model.matrix(~0+group+lane) colnames(design) <- gsub("group", "", colnames(design)) 
计算DE基因
# 例子 group <- factor(c(1,1,2,2,3,3)) design <- model.matrix(~group) fit <- glmQLFit(y, design) 

如果没有重复样本?

首先确定一个良好的BCV,人类数据一般设定为0.4
一个例子:

bcv <- 0.2 counts <- matrix( rnbinom(40,size=1/bcv^2,mu=10), 20,2) y <- DGEList(counts=counts, group=1:2) et <- exactTest(y, dispersion=bcv^2) 

如果是人类数据:

y_bcv <- y bcv <- 0.4 et <- exactTest(y_bcv,dispersion = bcv ^2) 

输出结果

result = topTags(et, n = nrow(et$table))$table 

查看统计

summary(de <- decideTestsDGE(et)) 

我想建立并管理一个高质量的生信&统计相关的微信讨论群,如果你想参与讨论,可以添加我微信: veryqun 。我会拉你进群,当然有问题也可以微信咨询我。

对我唯一的精神鼓励可能就是下方的点赞了吧 ^ ^

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209219.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:45
下一篇 2026年3月19日 上午9:46


相关推荐

  • kotlin 初始化数组

    kotlin 初始化数组为什么 80 的码农都做不了架构师 gt gt gt

    2026年3月26日
    1
  • 为什么要使用Iocomp控件?

    为什么要使用Iocomp控件?为什么要使用Iocomp控件?作为一个程序员,编写软件的过程中,我们常常需要用一些工控图表和工控仪表,想要自己制作出漂亮极品的控件的非常费时费力的,这时候使用专业的第三方控件就是非常不错的选择。一来节约了开发时间,降低了开发难度;二来第三方控件更加专业更精细;三来降低项目风险。Iocomp控件包括多种用来创建专业的仪表和测量、工业控制、工业监控等相关的应用程序的控件包,如仪表盘控件、开

    2022年7月17日
    16
  • 用vue实现入库单的打印「建议收藏」

    用vue实现入库单的打印「建议收藏」1、安装vue-print-nb插件npminstallvue-print-nb–save2、在main.js文件中引入插件importPrintfrom’vue-print-nb’Vue.use(Print)3、编写程序<divstyle=”width:37%”align=”center”><divid=”printTest”s…

    2025年11月29日
    11
  • 可变形卷积从概念到实现过程

    可变形卷积从概念到实现过程可变形卷积是如何实现的 什么是可变形卷积 为什么要可变形卷积 如何实现可变形卷积 什么是可变形卷积 可变形卷积是指卷积核在每一个元素上额外增加了一个参数方向参数 这样卷积核就能在训练过程中扩展到很大的范围 上图来自论文 DeformableCo 上图中 a 是传统的标准卷积核 尺寸为 3×3 图中绿色的点 b 就是我们今天要谈论的可变形卷积 通

    2026年3月20日
    2
  • 图书管理数据库系统

    图书管理数据库系统发本文的原因 本文是一个很经典的图书管理系统设计 大学本科实验 用例图 流程图真香 包含全部设计架构和源代码 可直接使用 链接 https pan baidu com s 16Wda96TQ 4MWHj5cXNhZa 提取码 ug6z1 系统简介该实验设计开发一个简单的图书管理数据库系统 包括图书馆内书籍的信息 学校在校师生的信息以及师生的借阅信息 此系统用户面向图书管理员

    2026年3月19日
    4
  • [阿里云]Redis的6379端口开通访问所踩到的坑

    [阿里云]Redis的6379端口开通访问所踩到的坑阿里云上Redis的6379端口开通访问所踩到的坑简单记一下踩到的坑:首先要现在阿里云的控制台开启相应的端口,参考以下文章:(ESC)https://blog.csdn.net/Shenpibaipao/article/details/83932150(轻型应用)https://blog.csdn.net/Shenpibaipao/article/details/79767766接…

    2022年5月7日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号