champ.norm
函數提供了歸一化的功能,支持下列4種歸一化的算法:
- BMIQ
- PBC
- SWAN
- 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 指定芯片類型,可選值包括450K
和EPIC
, 默認值為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值發生了變化,其中SWAN
和FunctionalNormalization
對于原始beta值的調整比較大,可以很明顯的看到歸一化前后的差別。
BMIQ
和PBC
算法對beta值調整的幅度很小,如果直接看數字,是看不出差別的,可能是小數點后十幾位有區別。總而言之,歸一化前后,發生變化的就是beta 值。
當數據歸一化之后,就可以進行后續的差異分析了。