champ.norm
函数提供了归一化的功能,支持下列4种归一化的算法:
其中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 参数指定归一化的算法,可选值包括BMIQ
, PBC
, SWAN
, FunctionalNormalization
, 默认值为BMIQ
arraytype 指定芯片类型,可选值包括450K
和EPIC
, 默认值为450K
对于实际的数据,首先根据芯片类型设置arraytype
参数,然后调整method参数,选择对应的归一化算法。
归一化的本质,是对探针的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
> 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
> 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
> 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
> 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值发生了变化,其中SWAN
和FunctionalNormalization
对于原始beta值的调整比较大,可以很明显的看到归一化前后的差别。
BMIQ
和PBC
算法对beta值调整的幅度很小,如果直接看数字,是看不出差别的,可能是小数点后十几位有区别。总而言之,归一化前后,发生变化的就是beta 值。
当数据归一化之后,就可以进行后续的差异分析了。