edgeR基因表达差异分析

官方文档总结

==注意⚠️:== - edgeR设计用于实际读取计数。我们不建议将预测的转录本丰度输入到edgeR而不是实际计数中。

读取read数

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

x

DGEList对象、构建分组

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

# 构建一个含有组别标记的DGEList

y

group

y

DGEList中分组是必要的,也可以添加其他信息进去,例如lane道,基因长度,基因注释等信息 一个注释过的DGEList

过滤,删除低表达基因

低表达基因不仅用不到,而且会干扰结果,所以要去除在任何样本中都没有足够多的序列片段的基因应该从下游分析中过滤掉,因为: 1. 低表达没有生物学意义 2. 去除低表达数据可以对数据中均值-方差关系有更精确的估计 3. 减少了观察差异表达下游分析中的运算量

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

CPM标度转换

常用的标度转换有CPM(counts per million)、log-CPM、FPKM、RPKM. CPM是将counts转变为CPM指数counts per million,消除测序深度影响。 log-CPM是将CPMlog2化。cpm函数会在进行log2转换前给CPM值加上一个弥补值。默认的弥补值是2/L其中2是“预先计数”,而L是样本总序列数(以百万计)的平均值,所以log-CPM值是根据CPM值通过log2(CPM + 2/L)计算得到的。 对于一个基因,CPM值为1相当于在序列数量约2千万的样品中,有20个计数,或者在序列数量约7.6千万有76个计数。

cpm

lcpm

手动过滤

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

cpm(y)

keep_cpm 1) >= 3 #此例设置最小组内样本数为3

x

自动过滤

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

keep.exprs

x

归一化

归一化不是绝对必要的,但是推荐进行归一化。 有重复的样本中,应该不具备生物学意义的外部因素会影响单个样品的表达,例如中第一批制备的样品会总体上表达高于第二批制备的样品,假设所有样品表达值的范围和分布都应当相似,需要进行归一化来确保整个实验中每个样本的表达分布都相似。可以使用edgeR::calcNormFctors()函数来用TMM方法进行归一化,通过计算归一化系数来决定文库大小的缩放系数当进行归一化时,如果对象是DGElist,那么这些归一化系数会被自动存在x$samples$norm.factors

测序深度

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

有效库大小

在某些情况下,如果一小部分高表达基因消耗了一个特定样本文库大小的很大一部分,这将导致该样本剩余基因的采样不足。除非对这种效应进行调整,否则在该样本中其余的基因可能会错误地表现为下调。(因为高表达基因比较多,消耗了大量的测序资源,导致非高表达基因会相对偏低。) 使用函数edgeR::calcNormFactors(),默认使用TMM方法进行归一化,归一化后,会给样品分配缩放系数。 将原始库大小与缩放因子的乘积称为有效库大小。有效的库大小会在所有下游分析中替换原始库大小。

y

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

GC含量

基因长度

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

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

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

# 图形展示

library(RColorBrewer)

lcpm

col.group

levels(col.group)

col.group

plotMDS(lcpm,labels=group,col=col.group)

#或者直接使用

plotMDS(y)

负二项式模型

计算生物变异系数

edgeR中对于离散度的估计主要有两种模型,其中比较经典的是==qCML==。但qCML方法仅适用于==单因素==的数据集。例如,比较癌和正常样本间的基因表达差异,而不考虑其他因素(如年龄、性别等)的影响。qCML后续会使用与fisher精确检验比较类似的 ==exact test== 进行差异表达分析。 如果使用qCML估计离散度,则不需要预先设定实验矩阵!(因为就只看一个因素,不必大费周折) 而对于更复杂的实验设计,则推荐使用GLMs模型,此时就需要提供实验矩阵design。 qCML方法:仅适用于具有单因素设计的数据集,但是有着更可靠的性能,尤其在小样本下有很好的表现,比较切合NGS测序。 通过estimateDisp()来估计公共离散度和 tagwise离散度(一个命令来运行)

y < -estimateDisp(y)

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

y

y

计算差异基因

et

topTags(et)

广义线性模型(Glm)

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

计算离散度

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

y

或者分开依次进行

y

y

y

关于design的构建(?):

#group是区别分组的factor对应不同样本,lane是不同样本的的lane道

design

colnames(design)

计算DE基因

edgrR涉及到差异表达分析的函数有很多: exactTest、glmFit、glmLRT、glmQLFit、glmQLFTest。 qCML估计离散度需要搭配 exact test 进行差异表达分析,对应 exactTest 函数。 而其他四个glm*都是与GLM模型搭配使用的函数。其中,glmFit 和 glmLRT 函数是配对使用的,用于 likelihood ratio test (似然比检验),而 glmQLFit和 glmQLFTest则配对用于 quasi-likelihood F test (拟极大似然F检验)。 有两个方法glmQLFit()和glmQLFTest(),在两个检验方法中,首选QLFit,因为它反映了估计每个基因的离散度时的不确定性。当重复次数较少时,它提供了更强大和可靠的错误率控制

# 例子

group

design

fit

如果没有重复样本?

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

bcv

counts

y

et

如果是人类数据:

y_bcv

bcv

et

注: 如果差异基因过少,可以尝试下调BCV

输出结果

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

查看统计

summary(de

因为我的笔记分布CSDN、简书、知乎专栏等比较零散,管理起来比较麻烦,思考再三申请了一个 微信公众号,会更加方便地发布更多有关生信息、统计方面内容,如果你觉得有需要可以尝试性和我缔结契约 ^ . ^ 。公众号如下:

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

edger多组差异性分析_edgeR基因表达差异分析相关推荐

  1. edger多组差异性分析_edgeR差异基因分析的一般过程

    基于转录组测序获得的定量表达值,识别差异表达变化的基因或其它非编码RNA分子,实际上方法还是非常多的.但就目前来看,DESeq2和edgeR是出现频率最高的两种方法了. DESeq2已经在上一篇文章中 ...

  2. edger多组差异性分析_edger差异分析,如何查询分组差异的结果

    如何设置分组,知道那个是对照,那个是control,免得做反了... library(edgeR) counts "data_test.txt", header=T, sep=&q ...

  3. edger多组差异性分析_edgeR之配对检验分析差异基因的使用教程

    edgeR的介绍 背景 RNA-seq表达谱与生物复制的差异表达分析. 实现一系列基于负二项分布的统计方法,包括经验贝叶斯估计,精确检验,广义线性模型和准似然检验. 与RNA-seq一样,它可用于产生 ...

  4. edger多组差异性分析_用R实现批量差异分析(t检验和方差分析),自己算P值

    对于二代数据的表达差异分析,理论上应该用reads counts进行计算.这个在我们论坛的专题帖已经有解释: 第14期"基因表达量计算和差异表达分析(下)"[视频] www.omi ...

  5. edger多组差异性分析_简单使用DESeq2/EdgeR做差异分析

    DESeq2和EdgeR都可用于做基因差异表达分析,主要也是用于RNA-Seq数据,同样也可以处理类似的ChIP-Seq,shRNA以及质谱数据. 这两个都属于R包,其相同点在于都是对count da ...

  6. edger多组差异性分析_简单使用DESeq2/EdgeR做差异分析 – 生信笔记

    DESeq2和EdgeR都可用于做基因差异表达分析,主要也是用于RNA-Seq数据,同样也可以处理类似的ChIP-Seq,shRNA以及质谱数据. 这两个都属于R包,其相同点在于都是对count da ...

  7. edger多组差异性分析_使用edgeR进行两组间的差异分析

    edgeR 接受raw count的定量表格,然后根据样本分组进行差异分析,具体步骤如下 1.  读取文件 需要读取基因在所有样本中的表达量文件,示例如下gene_id ctrl-1 ctrl-2 c ...

  8. edger多组差异性分析_转录组edgeR分析差异基因

    edgeR是一个研究重复计数数据差异表达的Bioconductor软件包.一个过度离散的泊松模型被用于说明生物学可变性和技术可变性.经验贝叶斯方法被用于减轻跨转录本的过度离散程度,改进了推断的可靠性. ...

  9. edger多组差异性分析_R语言利用edgeR package进行基因差异表达分析 举例

    R语言利用edgeR package进行基因差异表达分析 举例 实验数据: 同一组织,分为两组,control vs treat,每组7例sample.数据第一列为基因名,后14列为对应的count. ...

  10. edger多组差异性分析_转录组edgeR分析差异基因 | 生信菜鸟团

    转录组edgeR分析差异基因 edgeR是一个研究重复计数数据差异表达的Bioconductor软件包.一个过度离散的泊松模型被用于说明生物学可变性和技术可变性.经验贝叶斯方法被用于减轻跨转录本的过度 ...

最新文章

  1. 浅谈Chatbot的架构模型和响应机制
  2. 计算机桌面是哪个盘,windows的桌面文件夹是哪个?
  3. Android Volley彻底解决(三),定制自己Request
  4. 计算机组成原理第一阶段测试,计算机组成原理随堂测验1附答案
  5. 密钥方式登录linux,Linux的密钥对的方式登录方式
  6. php yaf smarty,Yaf 结合用户自定义的视图(模板)引擎Smarty(Yaf + Smarty)
  7. firefox flash-plugin怎样安装
  8. 各大网站猪年新春应景LOGO秀
  9. 圣诞节插画素材|设计师再忙也要看一看,没准可以帮助到你!
  10. jackson 反序列化string_Jackson序列化和反序列化
  11. SQL SERVER 用户自定义函数如何定义.
  12. Shanda EZ Mini
  13. PHP MD5 SHA1 比较 漏洞绕过
  14. TP-Link TD-W89841N 增强型无线路由器快速设置指南
  15. java中this用法
  16. 读取npy格式的文件
  17. 手机投影到电脑上做演示
  18. 各大媒体优劣对比_各大自媒体平台优缺点对比
  19. 骚操作!公司招聘运营称已婚双休未婚单休
  20. 2021-07-31-DJ-009 Django模板页面的继承与定制,一个Base.html,仿制漂亮的效果

热门文章

  1. Urllib库的基本使用
  2. Java学习个人备忘录之文档注释
  3. DVM 和 JVM 的区别?
  4. python 模拟人生
  5. 寻找二值图像的连通域算法分析
  6. 黑暗森林:知识图谱的前世今生
  7. 【深度学习】损失函数记录
  8. .ipynb文件的使用问题
  9. 运用ENVI bandmath对多波段进行计算
  10. day4--numpy