ChAMP分析甲基化芯片数据-差异分析上篇

2020-05-10 10:41:12 浏览数 (2)

经过预处理之后的数据,就可以进行差异分析了。对于甲基化芯片而言,有两个方面的差异分析

  1. DMP 差异甲基化探针
  2. DMR 差异甲基化区域

ChAMP包中,champ.DMP函数用于分析差异甲基化探针,champ.DMR函数用于分析差异甲基化区域。本章我们先看下差异探针的分析

champ.DMP函数的用法示例

myDMP <- champ.DMP()

在差异分析时,我们需要两个输入数据,一个就是探针的表达谱数据,beta matrix, 另外一个就是样本的分组信息。

champ.DMP函数中,默认myNorm作为归一化之后的beta matrix,对于样本的分组信息,ChAMP默认从Samplesheet.csv文件中读取,在数据导入成功后,myLoad$pd代表的就是SampleSheet.csv文件的信息,所以myLoad$pd$Sample_Group 代表样本的分组信息。

在差异分析时,最关键的就是差异分组问题。在实验设计阶段,有很多类型的分组设计,比如最常见的case_vs_control, 两个group的分组;多个组织,比如3个组织,共3个group; 时间序列,比如药物处理后的几个时间点。不同的实验设计,在差异分析时,想要关注的差异点自然不同,在分析时也要采取不同的分析策略。

对于ChAMP来说,上述的几种分组设计都是支持。

champ.DMP计算过程分为以下3步:

1. 检测样本分组,确定分组比较

测试数据分成T和C两组,每组各4个样本、

在这一步,需要确定两个因素:

  • 分组的类型 主要识别分组变量是离散型还是连续型,如果是字符串型character, 就是离散型,如果是数值型numeric, 就是连续型。不同的类型,采取的差异分析策略不同。 测试数据是字符型的两个group, 具体的输入信息如下
  • 分组的个数 确定group的个数,2个group 肯定是两者之间进行差异分析,但是当group 个数3个或以上时,就需要确定如何分组比较。 默认情况下两两之间都进行差异分析,如果你不需要这么多的差异结果,可以通过compare.group 参数指定, compare.group参数的值是一个list, list 中的每个元素是一个长度为2的向量,指定了用于差异分析的两个group

[ Section 1: Check Input Pheno Start ] You pheno is character type. Your pheno information contains following groups. >> C:4 samples. T:4 samples. [The power of statistics analysis on groups contain very few samples may not strong.] pheno contains only 2 phenotypes compare.group parameter is NULL, two pheno types will be added into Compare List. C_to_T compare group : C, T [ Section 1: Check Input Pheno Done ]

进行差异探针分析

通过调用limma 函数进行差异分析,默认通过BH方法进行多重建设检验的校正,p.adjust < 0.05 的认为是差异探针

可以通过adjPVal参数修改p.adjust的阈值,当然也可以修改adjust.method 参数的值,调整多重假设检验校正的算法,默认值为BH, 可选值包括 “none”, “BH”, “BY”, “holm”。

[ Section 2: Find Differential Methylated CpGs Start ] Start to Compare : C, T Contrast Matrix Contrasts Levels pT-pC pC -1 pT 1 You have found 4283 significant MVPs with a BH adjusted P-value below 0.05. Calculate DMP for C and T done. [ Section 2: Find Numeric Vector Related CpGs Done ]

添加差异探针的注释信息

之前的分析都是针对探针的beta matrix 进行的分析,找的差异探针之后,我们肯定希望知道这个探针对应的基因,染色体位置等注释信息。这一步实际就是在已有的差异结果的基础上,追加探针的注释信息。

[ Section 3: Match Annotation Start ] [ Section 3: Match Annotation Done ]

结果展示

str(myDMP) List of 1 $ C_to_T:’data.frame’: 4283 obs. of 23 variables: ..$ logFC : num [1:4283] 0.724 … ..$ AveExpr : num [1:4283] 0.398 … ..$ t : num [1:4283] 28.2 … ..$ P.Value : num [1:4283] 1.74e-08… ..$ adj.P.Val : num [1:4283] 0.00703… ..$ B : num [1:4283] 7.6 7.05 … ..$ C_AVG : num [1:4283] 0.0358 … ..$ T_AVG : num [1:4283] 0.759 … ..$ deltaBeta : num [1:4283] 0.724 … ..$ CHR : Factor w/ 25 levels “”,”1”,”10”,”11”,..: ..$ MAPINFO : int [1:4283] 141516291 … ..$ Strand : Factor w/ 3 levels “”,”F”,”R”: 3 2 … ..$ Type : Factor w/ 2 levels “I”,”II”: 2 2 … ..$ gene : Factor w/ 20622 levels “”,”A1BG” … ..$ feature : chr [1:4283] “Body” “Body” … ..$ cgi : Factor w/ 4 levels “island”,”opensea”,..: … ..$ feat.cgi : Factor w/ 28 levels “1stExon-island”,..: 13 … ..$ UCSC_CpG_Islands_Name: Factor w/ 27177 levels “”,”chr1:10003165-10003585”,..: 18278 … ..$ DHS : logi [1:4283] NA NA NA NA NA NA … ..$ Enhancer : logi [1:4283] TRUE TRUE NA NA NA NA … ..$ Phantom : Factor w/ 11912 levels “”,”high-CpG:100009860- … ..$ Probe_SNPs : Factor w/ 56004 levels “”,”rs10000615”,..: ..$ Probe_SNPs_10 : Factor w/ 35790 levels “”,”rs10000804” …

myDMP 就是最终的差异分析结果,是一个list对象,list中的每个元素是两个group之间差异分析的结果。

测试数据只有两个分组,所以list 中只有一个元素。差异分析的结果是一个data.frame对象,可以分成3个部分。

logFCB的部分是limma 差异输出结果, C_AVGdeltaBeta是每组表达量的均值,deltaBate是两组均值的差,CHRProbe_SNPs_10是探针的注释信息。

0 人点赞