limma powers differential expression analyses for RNA-sequencing and microarray studies
limma是一种R / Bioconductor软件包,为分析基因表达实验数据提供了集成解决方案。limma涵盖了在基因表达分析的每个主要步骤中的功能,从数据导入,预处理,质量评估和标准化,到线性建模,差异表达分析和基因特征分析等(http://www.bioconductor.org/)。
limma就是这么酷,感觉有了它就有了全天下~
统计规则
limma以一种对大规模表达研究有效的方式整合了许多统计学原理。它在表达值矩阵上操作,其中每行代表基因,或与当前研究相关的一些其他基因组特征,并且每列对应于RNA样品。统计模型的所有特征不仅可用于基因表达分析,还可用于基因表达特征的更高水平分析。
图1:limma分析的核心主要部分示意图
对于每个基因g,我们有一个基因表达值的矢量(yg)和一个设计矩阵X,它将这些值与一些感兴趣的系数(g)联系起来。 limma包包括统计方法,其中(i)利用经验贝叶斯方法促进信息借用以获得后验方差估计,(ii)结合观察权重(wgj,其中j指样本)以允许数据质量的变化, (iii)允许方差建模以适应可能存在的技术或生物异质性,以及(iv)预处理方法,例如方差稳定以减少噪声。这些方法都有助于在小实验中改善基因和基因集水平的推断。
limma工作流程
图2:limma工作流程
第一步:数据导入
第二步:预处理及质量评估
1、预处理RNA-seq和其他测序数据
limma以读数计数矩阵的形式接受RNA-seq数据,其中行为基因组特征和列为RNA样本,或者接受edgeR包中的DGEList对象。运用voom的算法处理后,RNAseq数据的后续分析即可与任何其他技术相同。
2、预处理microarray数据
limma可以接受多方microarray数据,如来自其他Bioconductor包的表达式数据的数据对象,来自marray包的marrayNormobjects,来自affyPLM包的PLMset对象,来自vsn包的vsn对象或继承自ExpressionSet的任何类的对象。或者,表达数据可以作为数字矩阵提供。当读取microarray图像时,通常读取每个探针的前景和背景强度,并进行背景矫正和归一化。
同时用户直观地检查来自设计实验的数据,以便识别潜在的质量问题,例如降级的样品,或由于阵列处理或样品处理而出现的问题。同时还可以揭示在后续分析之前应该去除的系统偏差。
图3:limma的诊断图
第三步:寻找差异表达基因
limma包的核心组件是能够将基因方式的线性模型拟合到基因表达数据,以评估差异表达分析。基本思想是同时估计两个或多个靶RNA样品之间的对数比(对于双通道数据)或对数强度(对于单通道数据)。每个分析都以表达水平矩阵开始,行中的探针/基因/外显子和列中的不同样品(生物学/技术重复)。线性建模以行方式执行,回归系数和标准误差直接估计感兴趣的比较或通过对比。获得基因排序的测试统计,其可以在基因集水平进一步概括以进行基因标记/途径水平排序。线性建模方法的灵活性允许处理几乎任何实验设计。
使用lmFit函数可以对两个或多个组以及内部控制的实验进行建模和总结。一旦拟合了线性模型,makeContrasts函数就可用于形成对比矩阵,拟合模型对象和对比矩阵用于对比,拟合log2倍折叠变化和t-统计的感兴趣对比,这允许进行治疗之间的所有可能的成对比较。
为了可视化单个或多个对比的差异分析分析结果,limma提供了许多绘图选项。
图4:结果可视化
A、火山图显示单一条件下的差异分析结果;B、维恩图显示多个实验条件下差异表达基因的数量;C、富集图突出显示差异表达分析中的特定基因特征。
同时,当外显子水平表达数据可用时,limma的线性模型框架也可以检测microarray或者RNA-seq的外显子差异剪接事件。
第四步:更高层次的分析
1、估计真零假设的比例
目前描述的分析物根据FDR标准鉴定个体差异表达的基因。然而,对于大多数研究,可能存在假阴性:真正差异表达的基因未被检测为差异表达。propTrueNull函数该运用了许多不同的方法来估计真零点的比例,可估计仍有待鉴定的真正差异表达基因的数量。
2、真性的基因表达谱的关联
基因表达实验通常涉及许多不同的治疗条件。经常出现的一个问题是:两种不同的治疗方法在多大程度上产生相似或不同的表达谱?解决该问题的一种方法是计算来自两种处理的差异表达基因的重叠,但这种方法通常太粗糙。
genas函数用来测试线性模型中的两个不同对比是否以相似或不同的方式影响相同的基因,调整偏差,而不需要应用显着截止值来评估差异表达。从技术上讲,它估计了两种不同对比的log2倍变化之间的真实生物相关性。genas基于经验贝叶斯模型的二元推广,用于评估limma中的差异表达。当变化很小但是一致时,这种方法对于深入了解常见受影响的基因途径特别有用。
3、基因集测试
limma包含一系列通过goana,geneSetTest,camera,roast和romer函数进行基因集测试的选项。goana使用广义超几何测试来检验差异表达基因列表中GO术语的富集,它直接在拟合的模型对象上运行,并自动提取差异表达的基因。与goana不同,其他基因组选项不需要应用显着性阈值来鉴定差异表达的基因。最简单的方法是在geneSetTest和wilcoxGST函数中实现的,它们执行基于秩的测试,这些测试评估指定的一组基因是否在所有基因的有序列表中排名高于偶然预期。roast具有考虑集合中基因的方向注释信息的独特能力,它能够容纳与特定途径正相关和负相关的基因,以及每个基因的变化幅度,因此,对于在不同表达研究之间发现基因表达模式的相似性特别有用。romer函数实现了基于旋转而不是置换的GSEA方法,它可以与一组基因组和任何线性模型一起使用。
同时,基因集的使用要求基因符号和注释在不同的数据库和研究之间匹配。基因符号随时间而变化,因此limma包含alias2Symbol和alias2SymbolTable函数,用于将基因符号别名映射到当前的官方基因符号。
上述就是被广泛使用的开源limma包的基因表达分析的特征啦,具体的代码使用还是需要更艰苦的摸索~
欢迎关注生信人
TCGA | 小工具 | 数据库 |组装| 注释 | 基因家族 | Pvalue
基因预测 |bestorf | sci | NAR | 在线工具 | 生存分析 | 热图
生信不死 | 初学者 | circRNA | 一箭画心| 十二生肖 | circos
舞台|基因组 | 黄金测序 | 套路 | 杂谈组装 | 进化 | 测序简史