单核苷酸多态性(SNP)可以创建和破坏CPG。由于甲基化主要发生在CPG,因此这种CPG-SNP可以直接影响甲基化测量。
回想一下,基于富集的甲基化方法测量了CpG附近的总甲基化。通过创建或破坏CPG,CPG-SNP在CPG附近引入了总甲基化的变化,这可以大大降低我们检测病例对照差异的能力。
拉姆瓦斯可以通过测试关节意义的关节意义来考虑CPG-SNP的可能影响\(\ beta_1 \)和\(\ beta_2 \)以下模型:
\ [\ mu_i = \ beta_0 +结果 * \ beta_1 + {结果} * {snp} _i * \ beta_2 + {snp} _i * \ beta_3 + \ gamma *
在哪里
对于CPG-SNPS分析,Ramwas需要通常的输入(请参阅步骤4和5)带有额外的SNP矩阵。
SNP数据必须具有与CPG分数矩阵相同的维度,即必须适用于相同的样本和相同的位置。数据制备可能包括为每个CPG找到最接近的SNP以及在附近没有任何SNP的CPG的排除。
为了说明这种类型的分析,我们生成以下人造文件。
cpg_locations。*
- filematrix带有SNP-CPG的位置。chr
和位置
)。cpg_chromosome_names.txt
- 具有整数列的染色体名称(因子级别)的文件chr
位于Filematrix的位置。覆盖范围。*
- filematrix的所有样品和所有位置的数据。SNP。*
- filematrix带有基因型数据,与覆盖矩阵匹配。首先,我们加载软件包并设置一个工作目录。项目目录博士
运行代码时,可以设置为更方便的位置。
库(ramwas)#在临时目录中工作dr = paste0(tempdir(),“/simulated_matrix_data”)dir.create(dr,showwarnings = false)cat(dr,dr,“ \ n”)
##/tmp/rtmpxyso5q/simulated_matrix_data
让样本数据矩阵具有200个样本和100,000个变量。
nsamples = 200 nvariables = 100000
对于这200个样品,我们生成一个具有年龄和性表型的数据框架和批处理效应协变量。
协变量= data.frame(sample = paste0(“样本_”,seq_len(nsamples)),性别= seq_len(nsamples)%% 2,age = runif(nsamples,min = 20,max = 80),batch = paste0(batch = paste0(批次“,(seq_len(nsamples)%% 3)))pander(head(corvariates))
样本 | 性别 | 年龄 | 批 |
---|---|---|---|
sample_1 | 1 | 71.5 | batch1 |
sample_2 | 0 | 35.8 | batch2 |
sample_3 | 1 | 60.4 | batch0 |
sample_4 | 0 | 64.5 | batch1 |
sample_5 | 1 | 28.4 | batch2 |
sample_6 | 0 | 26.3 | batch0 |
接下来,我们为100,000个变量创建基因组位置。
temp = cumsum(示例(20e7 / nvariables,nvariables,替换= true) + 0)chr = as.integer(temp% /%1E7) + 1L位置= as.integer(temp %% 1e7)locmat locmat = cbind = cbind(chrchr,位置=位置)chrnames = paste0(“ chr”,1:10)pander(head(locmat))
chr | 位置 |
---|---|
1 | 958 |
1 | 1850年 |
1 | 2916 |
1 | 4390 |
1 | 5386 |
1 | 6104 |
现在,我们将位置保存在Filematrix中,并创建带有染色体名称的文本文件。
fmloc = fm.create.from.matrix(filenamebase = paste0(dr,“/cpg_locations”),mat = locmat)关闭(fmloc)writelines(con = paste0(dr,“/cpg_chromosome_names.txt”)
最后,我们创建甲基化和SNP矩阵并填充它们。
fmm = fm.create(paste0(dr,“/coverage”),nrow = nsamples,ncol = nvariables)fms = fms = fm.create(paste0(dr,“/snps”),nrow = nsample1,type =“ integer”)#矩阵的行名称设置为示例名称ROWNAMES(fmm)= as.Character(COADARIATES $示例)ROWNAMES(fms)= as.Character(corvariates $ sample)#矩阵已填充,一次2000变量byrows = 2000 for(i在seq_len(nvariables/byrows)中)){#i = 1 ind =(1:byrows) + byrows + byrows *(i-1)size = 2,prob = 0.2)dim(snps)= c(nsamples,byrows)fms [,ind] = snps slice = double(nsamples*byrows)dim(slice)= c(nsamples,byrows)slice [,1:1:225] =切片[,1:225] +协变量$ sex / 50 / sd(协变量$ sex)slice [,101:116] = slice [,101:116] +协变量$ age / age / 16 / sd(covariates $ age age age age age age age age age age age age age age age age age age age age age age agge)slice = slice +((as.integer(factor(convariates $ batch))) + i %% 3) / 200 + snps / 1.5 + munif(nsamples*byrows*byrows) / 2 fmm [,ind] = slice} close(slice} close(FMS)关闭(FMM)
让我们测试CPG分数与性别变量之间的关联(模型之路
参数)纠正批处理效果(ModelCovariates
范围)。保存前20个结果(TOPPVTHRESHOLD
参数)在文本文件中。
param = ramwasparameters(dircoveragenorm = dr,corvariates = cOADARIATES,modelCovariates =“ batch”,modelOutoutcome =“ sex”,toppvthreshold = 20,filesnps =“ snps”)
CPG-SNP分析:
ramwassnps(param)
QQ图显示出明显的p值更好的富集。
为了进行比较,我们还对这些CPG进行了通常的MWA,而无需考虑SNP。
RAMWAS5MWAS(参数)
QQ图显示标准MWA的信号较弱。
最高发现保存在文本文件中top_tests.txt
对于这两个分析:
#获取带有测试结果的目录toptbl = read.table(paste0(pfull $ dirsnps,“/top_tests.txt”),header = true,sep =“ \ t”)pander(head(toptbl,10))
chr | 位置 | ftest | PVALUE | QVALUE |
---|---|---|---|---|
CHR5 | 2170316 | 15.5 | 5.86E-07 | 0.0156 |
CHR6 | 6144158 | 15.4 | 6.19E-07 | 0.0156 |
CHR5 | 2E+06 | 15.3 | 6.85e-07 | 0.0156 |
CHR2 | 3662023 | 15.1 | 8.02E-07 | 0.0156 |
CHR6 | 6011776 | 14.9 | 9.72E-07 | 0.0156 |
CHR7 | 6101550 | 14.7 | 1.13E-06 | 0.0156 |
CHR8 | 4049811 | 14.7 | 1.14E-06 | 0.0156 |
CHR3 | 4139987 | 14.5 | 1.36E-06 | 0.0156 |
CHR3 | 6020915 | 14.4 | 1.5E-06 | 0.0156 |
CHR1 | 4057972 | 14.3 | 1.59E-06 | 0.0156 |
请注意,CPG-SNP分析测试的关节意义\(\ beta_1 \)和\(\ beta_2 \)因此使用f检验,而常规MWA使用t检验。
pfull = parameterpreprocess(param)toptbl = read.table(paste0(pfull $ dirmwas,“/top_tests.txt”),header = true,sep =“ \ t”)pander(head(toptbl,10))
chr | 开始 | 结尾 | Cor | t.test | P.Value | Q.值 | beta |
---|---|---|---|---|---|---|---|
CHR2 | 8391383 | 8391384 | 0.344 | 5.13 | 7E-07 | 0.07 | 0.417 |
CHR4 | 4065682 | 4065683 | 0.325 | 4.81 | 3.03E-06 | 0.152 | 0.417 |
CHR4 | 2037393 | 2037394 | 0.314 | 4.63 | 6.6E-06 | 0.22 | 0.365 |
CHR1 | 7993772 | 7993773 | 0.307 | 4.52 | 1.08E-05 | 0.27 | 0.349 |
CHR1 | 4402991 | 4402992 | 0.304 | 4.46 | 1.36E-05 | 0.272 | 0.392 |
CHR5 | 1986222 | 1986223 | 0.299 | 4.38 | 1.91E-05 | 0.318 | 0.367 |
CHR5 | 4030551 | 4030552 | 0.294 | 4.3 | 2.65E-05 | 0.33 | 0.342 |
Chr10 | 3158494 | 3158495 | -0.292 | -4.28 | 2.93E-05 | 0.33 | -0.391 |
CHR1 | 4637285 | 4637286 | 0.292 | 4.28 | 2.97E-05 | 0.33 | 0.36 |
CHR4 | 105467 | 105468 | 0.287 | 4.2 | 4.05E-05 | 0.374 | 0.38 |