分享

ChAMP 分析甲基化芯片数据-归一化篇

 生信修炼手册 2019-12-24

champ.norm 函数提供了归一化的功能,支持下列4种归一化的算法:

  1. BMIQ
  2. PBC
  3. SWAN
  4. FunctionalNormalization

其中BMIQ和PBC 算法都是只针对探针的beta 矩阵进行归一化,而SWAN和FunctionalNormalization则需要在数据导入阶段采用minfi的算法。
函数用法示例

myNorm <- champ.norm()
[===========================]
[>>>>> ChAMP.NORM START <<<<<<]
champ.norm Results will be saved in ./CHAMP_Normalization/
[ SWAN method call for BOTH rgSet and mset input, FunctionalNormalization call for rgset only , while PBC and BMIQ only needs beta value. Please set parameter correctly. ]
<< Normalizing data with BMIQ Method >>
Note that,BMIQ function may fail for bad quality samples (Samples did not even show beta distribution).
3 cores will be used to do parallel BMIQ computing.
[>>>>> ChAMP.NORM END <<<<<<]
[===========================]
[You may want to process champ.SVD() next.]

对于这个函数,有几个关键参数需要调整

method

method 参数指定归一化的算法,可选值包括BMIQ, PBC, SWAN, FunctionalNormalization, 默认值为BMIQ

arraytype

arraytype 指定芯片类型,可选值包括450KEPIC, 默认值为450K
对于实际的数据,首先根据芯片类型设置arraytype 参数,然后调整method参数,选择对应的归一化算法。

归一化的本质,是对探针的beta 值进行校正,使得重复样本之间的beta值分布更加的接近,减少重复样本间的差异。

同一批数据用不同的归一化算法处理的结果如下

归一化之前的beta 值

> head(myLoad$beta[,1:2])
          NA17105-M_Rep1  A431_Rep1
cg00000957     0.83336578 0.89863953
cg00001349     0.89693013 0.91727435
cg00001583     0.31668180 0.89555041
cg00002028     0.03069992 0.07360386
cg00002719     0.04955457 0.96706172
cg00003202     0.01592223 0.02398773

SWAN归一化之后的beta 值

> myNorm <- champ.norm(method=”SWAN”)
> head(myNorm[,1:2])
          NA17105-M_Rep1  A431_Rep1
cg00000957     0.78674711 0.85207202
cg00001349     0.85706454 0.87576751
cg00001583     0.30066157 0.85079557
cg00002028     0.03740574 0.07020499
cg00002719     0.05894663 0.95375422
cg00003202     0.01998307 0.02665266

FunctionalNormalization归一化之后的beta 值

> myNorm <- champ.norm(method=”FunctionalNormalization”)
> head(myNorm[,1:2])
          NA17105-M_Rep1   A431_Rep1
cg00000957     0.90190549 0.878153237
cg00001349     0.94130604 0.903431781
cg00001583     0.43190955 0.884323706
cg00002028     0.10881798 0.036831578
cg00002719     0.19784471 0.943513834
cg00003202     0.05519015 0.008457334

PBC 归一化之后的beta值

> myNorm <- champ.norm(method=”PBC”)
> head(myNorm[,1:2])
          NA17105-M_Rep1  A431_Rep1
cg00000957     0.83336578 0.89863953
cg00001349     0.89693013 0.91727435
cg00001583     0.31668180 0.89555041
cg00002028     0.03069992 0.07360386
cg00002719     0.04955457 0.96706172
cg00003202     0.01592223 0.02398773

BMIQ 归一化之后的beta值

> myNorm <- champ.norm(method=”BMIQ”)
> head(myNorm[,1:2])
          NA17105-M_Rep1  A431_Rep1
cg00000957     0.83336578 0.89863953
cg00001349     0.89693013 0.91727435
cg00001583     0.31668180 0.89555041
cg00002028     0.03069992 0.07360386
cg00002719     0.04955457 0.96706172
cg00003202     0.01592223 0.02398773

对比归一化前后的结果可以看出,beta值发生了变化,其中SWANFunctionalNormalization对于原始beta值的调整比较大,可以很明显的看到归一化前后的差别。

BMIQPBC 算法对beta值调整的幅度很小,如果直接看数字,是看不出差别的,可能是小数点后十几位有区别。总而言之,归一化前后,发生变化的就是beta 值。

当数据归一化之后,就可以进行后续的差异分析了。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多