内容

1用于甲基化和基因型数据联合分析的统计模型

单核苷酸多态性(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 *

在哪里

2输入数据

对于CPG-SNPS分析,Ramwas需要通常的输入(请参阅步骤4和5)带有额外的SNP矩阵。

SNP数据必须具有与CPG分数矩阵相同的维度,即必须适用于相同的样本和相同的位置。数据制备可能包括为每个CPG找到最接近的SNP以及在附近没有任何SNP的CPG的排除。

2.1创建用于CPG-SNP分析的数据矩阵

为了说明这种类型的分析,我们生成以下人造文件。

  • cpg_locations。*- filematrix带有SNP-CPG的位置。
    它有两个具有整数值的列 - 染色体编号和位置(chr位置)。
  • cpg_chromosome_names.txt- 具有整数列的染色体名称(因子级别)的文件chr位于Filematrix的位置。
  • 覆盖范围。*- 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)

3SNP-CPG分析

让我们测试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