前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >minfi 分析甲基化芯片数据 - 预处理篇

minfi 分析甲基化芯片数据 - 预处理篇

作者头像
生信修炼手册
发布2020-05-11 10:53:23
1.8K0
发布2020-05-11 10:53:23
举报
文章被收录于专栏:生信修炼手册

在芯片分析中,使用探针的信号强度来衡量表达量,但是探针的信号强度会受到噪声的干扰,所以需要去除背景噪声。

差异分析的结果是我们最关注的的结果,为了保证差异分析结果的可靠性,除了保证样本处理和实验阶段的准确性之外,还必须尽可能的减少干扰因素,比如减少技术重复之间的差异,常用的手段就是归一化。

在所有类型的芯片分析中,都会包含去除噪声和归一化两个步骤,合称为预处理。

不论是450K还是850K芯片,都有一系列的control probe。 常见的背景降噪算法都是通过control探针的信号强度来校正CpG探针的信号强度。

对于甲基化芯片而言,由于混合了I型探针和II型探针,其归一化策略和其他的芯片会有所不同,必须使用专门的算法。

I型探针和II 型探针之间的差异

450K和850K芯片都混合使用了I型探针和II 型探针,而这两种探针的信号强度的分布并不相同。

技术重复之间的差异

技术重复之间的beta 值分布也有差异,会对差异分析造成影响。

上面的图片摘自以下文章

SWAN: Subset-quantile Within Array Normalization for Illumina Infinium HumanMethylation450 BeadChips

minfi 中, 提供了许多封装好的函数进行预处理操作,包括以下几种

preprocessRaw

直接使用探针原始的信号强度,不做任何的降噪和归一化操作。用法示例:

代码语言:javascript
复制
> Mset.raw <- preprocessRaw(rgSet)
> Beta.raw <- getBeta(Mset.raw)
> head(Beta.raw[, 1:2])
          5640269011_R01C01 5640269011_R01C02
cg00050873       0.442954145         0.4807018
cg00212031       0.037192982         0.4955224
cg00213748       0.062017215         0.4781491
cg00214611       0.009769379         0.5105634
cg00455876       0.519177321         0.3870192
cg01707559       0.053536392         0.4947322

preprecessIllumina

采用和illumina 公司提供的`Genomestudio 软件相同的背景降噪和归一化算法。 用法示例:

代码语言:javascript
复制
> Mset.illumina <- preprocessIllumina(rgSet, bg.correct = TRUE, normalize = "controls")
> Beta.illumina <- getBeta(Mset.illumina)
> head(Beta.illumina[, 1:2])
          5640269011_R01C01 5640269011_R01C02
cg00050873        0.44136148               NaN
cg00212031        0.01514483        0.45161290
cg00213748        0.02828619        0.40000000
cg00214611        0.00000000               NaN
cg00455876        0.52008149        0.08035714
cg01707559        0.03959919        0.49392097

相比原始探针的beta值,预处理之后发生了变化,值得注意的是beta 中产生了NaN, 这是因为降噪的过程中,探针的intensity变成了0。

需要注意的一点就是,getBeta 函数在计算beta值时,公式是beta = M / (U + M + offset), 默认情况下,offset 的值为0,而GenomeStudio计算beta值时,offset是100,如果想要得到和GenomeStudio相同的beta值,在使用getBeata函数时,需要指定offset=100

preprocessSWAN

采用SWAN 算法进行归一化,用法示例:

代码语言:javascript
复制
> Mset.swan <- preprocessSWAN(rgSet)
> Beta.swan <- getBeta(Mset.swan)
> head(Beta.swan[, 1:2])
          5640269011_R01C01 5640269011_R01C02
cg00050873        0.41484851         0.4373368
cg00212031        0.04521873         0.4455556
cg00213748        0.07077626         0.4259962
cg00214611        0.01518267         0.4695767
cg00455876        0.46695005         0.3344798
cg01707559        0.05960201         0.4046000

preprocessQuantile

用法示例:

代码语言:javascript
复制
Mset.quantile <- preprocessQuantile(rgSet,
   fixOutliers = TRUE,
   removeBadSamples = TRUE,
   badSampleCutoff = 10.5,
   quantileNormalize = TRUE,
   stratified = TRUE,
   mergeManifest = FALSE, sex = NULL)
Beta.quantile <- getBeta(Mset.quantile)
head(Beta.quantile[, 1:2])

preprocessNoob

使用noob 背景降噪和归一化算法,用法示例:

代码语言:javascript
复制
> Mset.noob <- preprocessNoob(rgSet)
Loading required package: IlluminaHumanMethylation450kanno.ilmn12.hg19
[preprocessNoob] Applying R/G ratio flip to fix dye bias...
> Beta.noob <- getBeta(Mset.noob)
> head(Beta.noob[, 1:2])
          5640269011_R01C01 5640269011_R01C02
cg00050873        0.43735970         0.4972196
cg00212031        0.02977752         0.4992273
cg00213748        0.05049398         0.4955324
cg00214611        0.02711612         0.5015160
cg00455876        0.52250999         0.4750661
cg01707559        0.02868987         0.4919265

preprocessFunnorm

首先使用noob算法降低噪声,然后使用 functional normalization algorithm 进行归一化,用法示例:

代码语言:javascript
复制
> Mset.funnorm <- preprocessFunnorm(rgSet)
[preprocessFunnorm] Background and dye bias correction with noob
[preprocessNoob] Applying R/G ratio flip to fix dye bias...
[preprocessFunnorm] Mapping to genome
[preprocessFunnorm] Quantile extraction
[preprocessFunnorm] Normalization
> Beta.funnorm <- getBeta(Mset.funnorm)
> head(Beta.funnorm[, 1:2])
          5640269011_R01C01 5640269011_R01C02
cg13869341         0.8088316        0.84008819
cg14008030         0.7052135        0.77599014
cg12045430         0.1955532        0.08396006
cg20826792         0.2799878        0.14448866
cg00381604         0.1393622        0.01848330
cg20253340         0.4237887        0.10738351

虽然有这么多的算法可供选择,在实际使用中,对于存在大规模差异的样本,比如癌症和正常人的差异,不同组织的差异鉴定,推荐使用 preprocessFunnorm ;对于小规模的差异,比如同一组织不同处理, 推荐使用 processFunnorm

总结

  1. 预处理主要包含背景降噪和归一化两大步骤;预处理之后,由于降噪和归一化处理,探针的intensity会发生改变,所以beta值会发生变化;
  2. minfi提供了许多预处理的算法,最常用的就是preprocessFunnormprocessQuantile;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • I型探针和II 型探针之间的差异
  • 技术重复之间的差异
    • preprocessRaw
      • preprecessIllumina
        • preprocessSWAN
          • preprocessQuantile
            • preprocessNoob
              • preprocessFunnorm
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档