单核苷酸多态性(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} + \ε\]
在哪里
对于cpg - snp分析,RaMWAS需要通常的输入第四步和第五步),使用额外的SNP矩阵。
SNP数据必须具有与CpG评分矩阵相同的维度,即它必须可用于同一组样本和同一组位置。数据准备可能包括为每个CpG找到最接近的SNP,并排除附近没有任何SNP的CpG。
为了说明这种类型的分析,我们生成以下人工文件。
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)
让我们检验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 |