美文网首页生信必备生物知识R语言做生信
[R]ChAMP帮助文档译[上]-甲基化分析流程(The Chi

[R]ChAMP帮助文档译[上]-甲基化分析流程(The Chi

作者: 郑宝童 | 来源:发表于2018-11-09 15:24 被阅读36次

很早很早之前翻译的ChAMP帮助文档译-甲基化分析流程

1新更新

【译者注:】新更新主要讲的是新版本CHAMP相较于旧版本所做的功能上的增删。

如果您使用2.8.3以上的ChAMP版本,请注意:您必须安装最新的ChAMPdata软件包(版本2.8.1)才能使用新的ChAMP工作。

1:在champ.load()中添加了“force”参数。“force”是minfi的read.meth.exp()函数中的一个参数,当您的数据集来自不同批次时,force参数将允许read.meth.exp()函数提取所有批次中的共有的探针并进行分析。

2:champ.DMP()现在可以使用数字变量:现在,champ.DMP()可以用于类似于年龄这样的数字变量,您可以在champ.DMP()函数中设置“pheno”参数(译者注:pheno是表型参数),使其检测与数字变量相关的CpG。(works on numeric variable now: Now champ.DMP() would works on numeric variable like age, you can set “pheno” parameter in champ.DMP() function to make it detect numeric variable related CpGs.)

3:champ.DMP()在每两个分类表型之间进行比较(译者注:两两表型之间进行比较):之前的champ.DMP()只能用在两个表型上,如果您的协变量中有多个表型,则需要设置参数“compare.group”比较他们中的任何两个。现在,champ.DMP()将对每一对表型并返回该对表型的所有结果的列表。

4:goseq被gometh替代:之前我们使用goseq来做CpG number矫正过的GSEA(CpG number corrected GSEA),现在我们使用了goseq算法的另一个实现:gometh。gometh发表在missMethyl包中,gometh在做GSEA时也使用CpGs数量进行校正。

5:missMethyl和combinat pacakges要用到了:由于我们在包中使用了一些新功能,如gometh和combn,我们需要在导入列表中添加这两个包。您可以使用命令:source("https://bioconductor.org/biocLite.R");biocLite("missMethyl","combinat")安装它们。

6:DMP.GUI()被改进了:现在DMP.GUI()函数会自动检测你的pheno参数的类型,如果它是“数字”,散点图将绘制在CpG plot 上,如果它是“character”或“factor”将绘制boxplot在CpG plot 上。

7:SVD图添加的图例:我们现在在SVD图中添加了带颜色的图例。

8:“minfi”加载方法修复:以前的“minfi”函数不工作,因为wateRmelon的beadcount()函数无法从rgSet对象获取beads information,这可能是由于minfi和wateRmelon之间的冲突而引起的。现在我们修复了这个问题,而现在,旧的“minfi”加载方法是有效的。您可以在champ.load()函数中设置参数方法来用您的更喜欢的方式加载数据。

9:ChAMP 的vignette和github示例 的页面更新(译者注:vignette是长帮助文档):我们花了大量的工作来升级ChAMP vignette。还在我们的github演示页面上添加了更多最新的演示结果。

10:在vignette中增加了来自GSE40279的图表结果。由于您的450K演示数据不包含任何数字变量,因此我们在此处使用GSE40279显示展示champ.SVD()和DMP.GUI()的性能。

2介绍

ChAMP包旨在分析Illumina甲基化beadarray数据(EPIC和450k),并提供了一个集成当前可用的450k和EPIC分析方法的流程。这包括各种不同的数据导入方法(例如来自.idat文件或beta值矩阵)和质量控制图(qc plot)。2型探头校正方法包括 SWAN , Peak Based Correction (PBC) and BMIQ (默认BMIQ)。minfi 包提供的有名的功能标准化函数也可以用:奇异值分解(SVD)方法可以深入挖掘批次效应,结合ComBat方法校正批次效应。通过RefbaseEWAS 可以调整细胞型异质性。ChAMP还包含了一个函数能从450k或EPIC数据推断拷贝数变异。为了识别差异甲基化区域(DMR),ChAMP 除了集成了以前的DMR检测方法Bumphunter和DMRcate 之外,还提供了Lasso方法。对于需要寻找差异甲基化块的用户,新版ChAMP也集成了这个功能。champ也可实现基因富集分析(GSEA)。此外,新版本的ChAMP还结合了FEM包,它可以推断在表型之间呈现差异甲基化的个体化基因网络模块。

尽管有许多其它流程和包可以分析450K或EPIC数据( IMA, minfi, methylumi, RnBeads and wateRmelon),但champ提供了从读取原始数据文件到最后一步结果输出的更全面的和完整的分析流程,它简化了研究人员的甲基化阵列分析过程。新版ChAMP还提供了一系列基于ShinyPlotly的WebBrower交互式分析功能(GUI功能),以帮助科学家更方便的查看ChAMP结果。这就需要一个基于web浏览器的交互式框架,用于本地或远程调用图形系统。例如,对于大多数Linux系统来说:X11(译者注:在Macintosh和Windows有图形界面之后,unix系统也想搞一套图形界面系统,然后就有了X11。经过几年的发展,X11逐渐成了unix和linux上的主流图形界面系统。)。.

如果您有任何bugs要报告或对ChAMP的建议,请发送电子邮件至champ450k@gmail.com

3安装

要求您的计算机或服务器上已安装R 3.3或更高版本R。ChAMP是一个集成了许多其他CRAN和Bioconductor包的流程(pipeline) 。要使流程的所有步骤正常工作,请确保将Bioconductor升级到最新版本(3.5)。

在R和Bioconductor安装完成之后,您可以开始安装ChAMP。安装它的最简单方法是在您的R session输入以下代码:

source("https://bioconductor.org/biocLite.R")
biocLite("ChAMP")

如果您在使用Bioconductor存在任何问题,可以使用的另一个手段是直接安装所有相关依赖软件包,然后安装ChAMP。ChAMP依赖于许多包,您可以在R中使用以下命令安装大部分包:

source("http://bioconductor.org/biocLite.R")
biocLite(c("minfi","ChAMPdata","Illumina450ProbeVariants.db","sva","IlluminaHumanMethylation450kmanifest","limma","RPMM","DNAcopy","preprocessCore","impute","marray","wateRmelon","goseq","plyr","GenomicRanges","RefFreeEWAS","qvalue","isva","doParallel","bumphunter","quadprog","shiny","shinythemes","plotly","RColorBrewer","DMRcate","dendextend","IlluminaHumanMethylationEPICmanifest","FEM","matrixStats","missMethyl","combinat"))

当您安装ChAMP时,您可能会遇到一些错误,指出某些软件包未安装。这些错误是由递归依赖于R包导致的,例如,ChAMP使用minfi,minfi使用lumi,lumi使用其他软件包,因此如果您的计算机上没有安装lumi,则ChAMP将失败。要解决这些错误,您只需要检查这些错误消息,找出需要丢失的包,然后biocLite("YourErrorPackage")直接使用命令安装。然后重新安装ChAMP,可能需要3-4次,但最终应该可以安装上ChAMP。

安装后,您应该可以在R会话中加载ChAMP软件包:

library("ChAMP")

4测试数据

该包含有两个测试数据集,一个是HumanMethylation450数据(.idat),另一个是模拟的 EPIC数据,可用于测试ChAMP中的函数。可以像如下所示导入我们的测试数据:

testDir=system.file("extdata",package="ChAMPdata")
myLoad <- champ.load(testDir,arraytype="450K")

该450K肺肿瘤数据集只包含8个样本,4个肺肿瘤样本(T)和4个对照样本(C)。我们之后将使用这个数据集来展示ChAMP的功能。

对于EPIC模拟数据集,用户可以使用以下代码来加载它:

data(EPICSimData)

该模拟数据集包含16个样本,所有这些样本实际上最初是来自于一个样本(经过修改DMP和DMR,同时也赋予一些误差方差)(but modified into DMP and DMR, also alone with some errors variance)。在这16个样本数据集中,我们模拟8个样本为control,8个样本为case,样本在EPICSimData对象的pd(表型)中标记。在这个数据中,我们随机选择了来自bummunter包的clusterMaker()函数的5000个区域。在每个区域,我们随机选择一些连续CpG作为DMR,然后增加或减少该DMR的β值。所以在这个数据集中应该有不到5000个DMR(4700+),因为一些模拟DMR只包含1-2个CpGs,所以在用champ.DMR()函数时不被判定为DMR。用户可以使用此数据来测试ChAMP在EPIC数据上的效能。

5 ChAMP流程

5.1流程介绍

ChAMP流程图(上图)概述了ChAMP流程中的步骤。每个步骤可以作为一个单独的功能单独运行。这允许ChAMP的结果与其他分析流程之间进行集成。在上述流程图中,包括了ChAMP的所有功能,它们使用三种颜色进行分类:

  • 蓝色表示甲基化数据准备的函数,如加载,归一化,质量控制检查等。

  • 红色代表产生分析结果的函数,如差异甲基化位置(DMP),差异甲基化区域(DMR),差异甲基化区块,EpiMod(一种用于检测差分甲基化基因模块的方法来源于FEM包),通路富集结果等。

  • 黄色表示数据集和分析结果的GUI界面(译者注:界面化展示结果)。

上述曲线中的实线灰色表示流程线,而虚线灰线表示函数可能不一定被使用,这取决于您的数据和项目。

在上图中,有一些标有绿色微光的函数和连接(线),表示主要分析流程。ChAMP结合了许多函数,但并不是所有函数都要在你的分析中使用。绿色微光表示最可能用于各种数据集的主要分析流程。我们还标记了这些主要流程的分析顺序,这对新用户应该是有帮助的。图表中间的黑点表示完全准备好的甲基化数据集,这是数据准备和数据分析之间的关键。因此,我们建议您保存完全准备好的数据,因为您的其他分析可能直接从它开始。

5.2全流程

完整的流程可以使用一个命令一次运行:

champ.process(directory = testDir)

当通过champ.process()函数运行完整的流程时,可以调整多个参数。这些参数与ChAMP包中涉及的所有功能相关,但并不包括所有参数,否则,champ.process()函数将会太大; 请参阅ChAMP的manual进行参数设置。

5.3分步步骤

我们注意到,champ.process()可能并不总是成功运行,这可能是由于特定数据集的特殊性。例如,pd文件中感兴趣的协变量可能不表示为“Sample_Group”,而是另一个类别,例如“Disease”,但在ChAMP函数中,“Sample_Group”被设置为感兴趣的变量的默认值。如果在使用champ.process()时遇到任何问题,我们建议您逐步运行这个流程:

myLoad <- cham.load(testDir)
# Or you may separate about code as champ.import(testDir) + champ.filter()
CpG.GUI()
champ.QC() # Alternatively: QC.GUI()
myNorm <- champ.norm()
champ.SVD()
# If Batch detected, run champ.runCombat() here.
myDMP <- champ.DMP()
DMP.GUI()
myDMR <- champ.DMR()
DMR.GUI()
myBlock <- champ.Block()
Block.GUI()
myGSEA <- champ.GSEA()
myEpiMod <- champ.EpiMod()
myCNA <- champ.CNA()

# If DataSet is Blood samples, run champ.refbase() here.
myRefbase <- champ.refbase()

我们注意到,上述ChAMP函数是使用默认参数的,用户可以自行调整参数,用户也可以将其他独特的分析工具或方法集成到这里使用。有关参数选项的详细信息,请查看此vignette的相关章节或ChAMP manual。

5.4 EPIC流程

ChAMP为EPIC阵列分析提供了友好的用户接口。大多数功能对于450K阵列和EPIC阵列都是相同的,唯一的区别在于一个参数'arraytype',(该参数作用于需要注释文件的函数上):您只需要将此参数设置为“EPIC”。在ChAMP包中,我们创建了一个模拟的EPIC数据集(beta值)。分析EPIC阵列的流程如下:

# myLoad <- champ.load(directory = testDir,arraytype="EPIC")
# We simulated EPIC data from beta value instead of .idat file,
# but user may use above code to read .idat files directly.
# Here we we started with myLoad.

data(EPICSimData)
CpG.GUI(arraytype="EPIC")
champ.QC() # Alternatively QC.GUI(arraytype="EPIC")
myNorm <- champ.norm(arraytype="EPIC")
champ.SVD()
# If Batch detected, run champ.runCombat() here.This data is not suitable.
myDMP <- champ.DMP(arraytype="EPIC")
DMP.GUI()
myDMR <- champ.DMR()
DMR.GUI()
myDMR <- champ.DMR(arraytype="EPIC")
DMR.GUI(arraytype="EPIC")
myBlock <- champ.Block(arraytype="EPIC")
Block.GUI(arraytype="EPIC") # For this simulation data, not Differential Methylation Block is detected.
myGSEA <- champ.GSEA(arraytype="EPIC")
myEpiMod <- champ.EpiMod(arraytype="EPIC")

# champ.CNA(arraytype="EPIC")
# champ.CNA() function call for intensity data, which is not included in our Simulation data.

5.5计算要求

该流程对大量样本的数据的分析能力在某种程度上取决于可用的内存大小。ChAMP流程在具有8GB内存的计算机上可以成功运行200个样本。如果样本量大的话,可以找服务器/群集来执行分析。

champ.load()函数会使用很多的内存。如果您打算多次运行分析,建议运行myLoad <- champ.load() 将导入的内容保存到列表中用于之后的分析。

在champ.DMR(),champ.norm()和champ.Block()函数中,一些方法可能使用了并行的方法来加速进程。如果您的服务器或计算机拥有较多的内核,您可以同时指定更多的内核运行,以使函数运行速度更快(不过这可能会增加内存的占用)。您可以在R中使用以下代码来检测核心数量。

library("doParallel")
detectCores()

GUI函数需要更多的条件。需要GUI环境的基本框架(A basic framework for a GUI environment is required。如果您在自己的电脑上运行ChAMP,那是极好的。但是,如果您在远程服务器上运行ChAMP,则本地显示系统对于使用这些基于WebBrower的GUI功能至关重要(X11是一个非常常用的工具)(译者注:x11指的是什么?我贴上一枚知乎链接解释这个问题 https://www.zhihu.com/question/27939248?sort=created)。对于Windows用户,XmanagerMobaxTerm 是非常好的选择。(译者注:xmanager是一个可以实现windows系统和linux系统的交互,对linux进行管理。可以在两种系统间传输文件)

ChAMP的一个重大改进是:即便用户不是从原始的.idat文件开始,也可以进行完整的分析。(只要您有甲基化β矩阵和相应的表型(pd)文件,您就可以进行几乎所有的ChAMP分析。这样使得那些只有beta值文件而没有原始idat文件的用户分析更加容易。(例如,从TCGA或GEO获取数据的用户。)(译者注:GEO TCGA上获取的数据通常是被处理成含beta值的谱)

相关文章

网友评论

    本文标题:[R]ChAMP帮助文档译[上]-甲基化分析流程(The Chi

    本文链接:https://www.haomeiwen.com/subject/uyfoxqtx.html