甲基化数据QC:使用甲基化数据计算样本间的相关性

样本间的相关性,可以反映公司加样时是否存在重复加样的错误。

下面简要介绍一下如果利用甲基化数据计算样本间的相关性

1、提取甲基化探针的snp位点、CpG的beta值

下面用的示例文件是minfi包自带的。

如果是自己的数据,那么提取甲基化snp位点用的是没有经过过滤的原始数据。

首先,安装:

BiocManager::install(c("minfi","minfiData","sva"))
library(minfi)
library(minfiData)
library(sva)
baseDir <- system.file("extdata", package="minfiData")
targets <- read.metharray.sheet(baseDir)
RGSet <- read.metharray.exp(targets = targets)
manifest <- getManifest(RGSet)

这里可以看到不同探针的情况:

甲基化数据QC:使用甲基化数据计算样本间的相关性

一条龙服务,提取甲基化探针的snp位点、CpG的beta值:

MSet <- preprocessRaw(RGSet) 
RSet <- ratioConvert(MSet, what = "both", keepCN = TRUE)
GRset <- mapToGenome(RSet)
beta <- getBeta(GRset) #提取CpG的beta值
snps <- getSnpBeta(RGSet) #提取SNP位点

2、CpG和SNP的beta值位点示例结果

提取完CpG和SNP后,看一下各自的示例结果:

CpG的beta值示例结果:

甲基化数据QC:使用甲基化数据计算样本间的相关性

甲基化SNP位点的示例结果:

甲基化数据QC:使用甲基化数据计算样本间的相关性

3、计算相关性

计算样本间的相关性,我们用R自带的cor函数即可。选用的数值为SNP的甲基化数值

计算相关性代码:cor(snps)

结果如下:

甲基化数据QC:使用甲基化数据计算样本间的相关性

这里解释一下,为什么不选用CpG的beta值计算相关性。

如下图所示,我分别用了前100、1000、10000个CpG的beta值计算样本1(5723646052_R02C02)和样本2(5723646052_R04C01)的相关性,相关性均在0.97以上(蓝色框框),用snps位点计算相关性时,样本1和样本2的相关性则为0.1426071(红色框框)。

甲基化数据QC:使用甲基化数据计算样本间的相关性

可见,CpG的beta值计算出来的相关性都特别高,根本不能区别样本间真实的相关性。

因此,计算样本间相关性,推荐甲基化探针的SNP位点。

甲基化数据QC:使用甲基化数据计算样本间的相关性