Limma总结集锦

2022-02-18  本文已影响0人  斗战胜佛oh

前言

limma的全称是:Linear Models for Microarray Data

需要阅读limma的官方说明:https://www.bioconductor.org/packages/release/bioc/vignettes/limma/inst/doc/usersguide.pdf

尤其是第8章 Linear Models Overview

常用知识点

知识点一 (文字解释)

进行差异分析时常用limma。虽然它是针对芯片数据开发的,但也有limma-voom可以分析转录组数据,可以作为金标准。

它需要的输入文件有:
它的主要流程有:

知识点二(代码演示)

搭配上面👆的解释来看,效果更好

分开展示 =》 构建三个输入文件
# 输入文件一:例如我现在已经有了一个表达矩阵eset

# 输入文件二:分组矩阵【假设9个样本分成了3组】
design <- model.matrix(~ 0+factor(c(1,1,1,2,2,3,3,3)))
colnames(design) <- c("group1", "group2", "group3")
rownames(design) <- colnames(eset)

# 输入文件三:比较矩阵【如果要进行三组之间的两两比较】
contrast.matrix <- makeContrasts(group2-group1, group3-group2, group3-group1, levels=design)

分开展示 =》 进行三个主要流程
# 第一步:lmFit
fit <- lmFit(eset, design)
fit2 <- contrasts.fit(fit, contrast.matrix)

# 第二步:eBayes
fit2 <- eBayes(fit2)

# 第三步:topTable【最后例如要挑出第一个比较组:group2-group1的差异分析结果】
topTable(fit2, coef=1, adjust="BH")

最后整合展示代码
# 还是假设有了表达矩阵eset
design <- model.matrix(~ 0+factor(c(1,1,1,2,2,3,3,3)))
colnames(design) <- c("group1", "group2", "group3")
fit <- lmFit(eset, design)
contrast.matrix <- makeContrasts(group2-group1, group3-group2, group3-group1, levels=design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
# 【例如要挑出第一个比较组:group2-group1的差异分析结果】
output <- topTable(fit2, coef=1, adjust="BH")

最后的最后,别忘了去掉那些NA值

limma_DEG = na.omit(output) 
# 然后可以选择保存
# write.csv(limma_DEG,"limma_results.csv",quote = F)

知识点三 一定要使用比较矩阵吗?

答案是不一定
看这里:https://github.com/bioconductor-china/basic/blob/master/makeContrasts.md

然后可以再结合说明书Chapter9.2 (第42页)

Group <- factor(targets$Target, levels=c("WT","Mu"))

其实差异分析,一个使用难点就是:分组
limma包关于如何针对特殊情况进行分组描述了很大的篇幅

例如 如果包含多个组多个处理

参考:limma说明书 P43

上面分组矩阵的设计规律就是:

design <- model.matrix(~Block+Treatment)

将每个组作为一个block,其中只比较组内的处理和对照(Treatment)

例如 时间顺序的样本

参考P47 的 Chapter 9.6

比方说,有两种基因型(wt、mu),各自测了3个时间点(0、6、24h)

image

可以这样操作:

lev <- c("wt.0hr","wt.6hr","wt.24hr","mu.0hr","mu.6hr","mu.24hr")

f <- factor(Target, levels=lev)

design <- model.matrix(~0+f)
colnames(design) <- lev

fit <- lmFit(eset, design)

如果要探索野生型中从0到6、从6到24h等待后发生了什么变化
cont.wt <- makeContrasts(
      "wt.6hr-wt.0hr",
      "wt.24hr-wt.6hr", levels=design)

fit2 <- contrasts.fit(fit, cont.wt)
fit2 <- eBayes(fit2)
topTableF(fit2, adjust="BH")
# 那么对于mu型也是一样的

如果要探索从0-6、从6到24h处理后,mu相对wt发生了什么变化
cont.dif <- makeContrasts(
     Dif6hr =(mu.6hr-mu.0hr)-(wt.6hr-wt.0hr),
     Dif24hr=(mu.24hr-mu.6hr)-(wt.24hr-wt.6hr),
 levels=design)

fit3 <- contrasts.fit(fit, cont.dif)
fit3 <- eBayes(fit3)
topTableF(fit3, adjust="BH")

当然,还有很多很多的例子,都在说明书有体现。
这里只是列出来一个思路:凡是想用一个包,它的帮助文档就是最好的答案

参考:
链接:https://www.jianshu.com/p/ada878fdedf7

上一篇 下一篇

猜你喜欢

热点阅读