内容

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

单核苷酸多态性(SNPs)可以创造和破坏cpg。由于甲基化主要发生在cpg上,因此cpg - snp可以直接影响甲基化测量。

回想一下,基于富集的甲基化方法测量CpG附近的总甲基化。通过创建或破坏CpG, CpG- snp引入了CpG附近总甲基化的变化,这将大大降低我们检测病例-对照差异的能力。

RaMWAS的联合显著性测试可以解释cpg - snp的可能影响\ \ beta_1 \ ()而且\ \ beta_2 \ ()以下模型:

\ [\ mu_i = \ beta_0 +结果* \ beta_1 +{结果}* {SNP} _i * \ beta_2 + {SNP} _i * \ beta_3 + \γ* {cvrt} + \ε\]

在哪里

2输入数据

对于cpg - snp分析,RaMWAS需要通常的输入第四步和第五步),使用额外的SNP矩阵。

SNP数据必须具有与CpG评分矩阵相同的维度,即它必须可用于同一组样本和同一组位置。数据准备可能包括为每个CpG找到最接近的SNP,并排除附近没有任何SNP的CpG。

2.1为CpG-SNP分析创建数据矩阵

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

  • CpG_locations。*-带有snp - cpg位置的胶片矩阵。
    它有两列整数值-染色体数目和位置(空空的而且位置).
  • CpG_chromosome_names.txt-整数列的染色体名称(因子级别)文件空空的在位置矩阵中。
  • 报道。*- filmatrix与所有样本和所有位置的数据。
    每行都有单个样本的数据。行名是示例名称。
    每一列都有一个位置的数据。列与位置胶片矩阵的行匹配。
  • 单核苷酸多态性。-带有基因型数据的膜矩阵,与覆盖矩阵匹配。

首先,我们加载包并设置一个工作目录。项目目录博士可以在运行代码时将其设置为更方便的位置。

库(ramwas) #工作在临时目录Dr = paste0(tempdir(), "/simulated_matrix_data") dir。create(dr, showWarnings = FALSE) cat(dr,"\n")
# # / tmp / RtmpaK2H1x / simulated_matrix_data

设样本数据矩阵有200个样本和100,000个变量。

Nsamples = 200 nvariables = 100000

对于这200个样本,我们生成一个具有年龄和性别表型的数据框架和一个批处理效应协变量。

covariables = data.frame(sample = paste0("Sample_",seq_len(nsamples)), sex = seq_len(nsamples) %% 2, age = runif(nsamples, min = 20, max = 80), batch = paste0("batch",(seq_len(nsamples) %% 3))) pander(head(协变量)))
样本 年龄 批处理
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

接下来,我们为10万个变量创建基因组位置。

temp = cumsum(sample(20e7 / nvariables, nvariables, replace = TRUE) + 0) chr = as.integer(temp %/% 1e7) + 1L position = as.integer(temp %% 1e7) locmat = cbind(chr = chr, position = position) chrnames = paste0("chr", 1:10) pander(head(locmat)))
空空的 位置
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) close(fmloc) writeLines(con = paste0(dr, "/CpG_chromosome_names.txt"), text = chrnames)

最后,我们创建甲基化和SNP矩阵并填充它们。

fmm = fm.create(paste0(dr,"/Coverage"), nrow = nsamples, ncol = nvariables) fms = fm.create(paste0(dr,"/SNPs"), nrow = nsamples, ncol = nvariables, size = 1, type = "integer") #矩阵的行名设置为样本名rownames(fmm) = as.character(协变量$sample) rownames(fms) = as.character(协变量$sample) #矩阵被填充,同时处理2000个变量byrows = 2000 for(I in seq_len(nvariables/byrows)){# I =1 ind = (1:byrows) + byrows*(I -1) SNPS = rbinom(n = byrows* nsamples, size = 2, prob = 0.2) dim(SNPS) = c(nsamples, byrows) fms[,ind] = SNPS slice = double(nsamples*byrows) dim(slice) = c(nsamples, byrows) slice[, 1:25 25] = slice[,1:25] +协变量$sex / 50 / sd(协变量$sex) slice[,101:116] = slice[,101:116] +协变量$age / 16 / sd(协变量$age) slice = slice + ((as.integer(factor(协变量$batch))+i) %% 3) / 200 + SNPS / 1.5 + runif(nsamples*byrows) / 2 fmm[,ind] = slice} close(fms) close(fmm) close(fmm)

3.SNP-CpG分析

让我们检验CpG评分与性别协变量(modeloutcome参数)校正批处理效果(modelcovariates参数)。保存前20个结果(toppvthreshold参数)在文本文件中。

param = ramwasParameters(dircoveragenorm = dr, covariables = covariables, modelcovariables = "batch", modeloutcome = "sex", toppvthreshold = 20, fileSNPs = "SNPs")

CpG-SNP分析:

ramwasSNPs(参数)

qq图显示较好的富集,p值显著。

为了进行比较,我们还对这些cpg进行了通常的MWAS,而不考虑snp。

ramwas5MWAS(参数)

qq图显示标准MWAS信号弱得多。

最上面的发现保存在文本文件中Top_tests.txt对于两种分析:

#获取测试结果目录toptbl = readtable(paste0(pfull$dirSNPs, "/Top_tests.txt"), header = TRUE, sep = "\t")
空空的 位置 英国《金融时报》 pvalue qvalue
chr5 2170316 15.5 5.86 e-07 0.0156
chr6 6144158 15.4 6.19 e-07 0.0156
chr5 2 e + 06 15.3 6.85 e-07 0.0156
chr2 3662023 15.1 8.02 e-07 0.0156
chr6 6011776 14.9 9.72 e-07 0.0156
chr7 6101550 14.7 1.13 e-06 0.0156
chr8 4049811 14.7 1.14 e-06 0.0156
chr3 4139987 14.5 1.36 e-06 0.0156
chr3 6020915 14.4 1.5 e-06 0.0156
chr1 4057972 14.3 1.59 e-06 0.0156

注意,CpG-SNP分析测试的联合显著性\ \ beta_1 \ ()而且\ \ beta_2 \ ()因此采用f检验,而常规MWAS采用t检验。

pfull = parameterPreprocess(param) toptbl = read。table(paste0(pfull$dirmwas, "/Top_tests.txt"), header = TRUE, sep = "\t")
空空的 开始 结束 天哪 t.test p.value q.value β
chr2 8391383 8391384 0.344 5.13 7 e-07 0.07 0.417
chr4 4065682 4065683 0.325 4.81 3.03 e-06 0.152 0.417
chr4 2037393 2037394 0.314 4.63 6.6 e-06 0.22 0.365
chr1 7993772 7993773 0.307 4.52 1.08 e-05 0.27 0.349
chr1 4402991 4402992 0.304 4.46 1.36 e-05 0.272 0.392
chr5 1986222 1986223 0.299 4.38 1.91 e-05 0.318 0.367
chr5 4030551 4030552 0.294 4.3 2.65 e-05 0.33 0.342
chr10 3158494 3158495 -0.292 -4.28 2.93 e-05 0.33 -0.391
chr1 4637285 4637286 0.292 4.28 2.97 e-05 0.33 0.36
chr4 105467 105468 0.287 4.2 4.05 e-05 0.374 0.38