1背景

理解和预测基因变异如何影响基因表达是现代生物学和医学领域的重要课题。利用全基因组测序(WGS)和RNA测序(RNA-seq)技术,人们已经做出了许多努力,将单核苷酸多态性(SNPs)与细胞和组织中的表达变异联系起来。

目前估计基因表达的遗传贡献的方法没有考虑识别中的功能信息表达数量性状位点(eQTL),即那些有助于解释基因表达变异的遗传变异。依赖SNPs作为预测因子,可以仅对那些SNPs具有相当好的效应大小的基因建立显著的基因表达模型,但对于大多数基因来说,这一条件并不满足,尽管它们的表达具有非零遗传力(h2).为了解决这个问题,需要新的、不同的策略来分析调控区域的遗传变异性及其对转录的影响。

AffiXcan(total binding AFFInity-eXpression sCANner)实现了一种基于稍后通知(Total Binding Affinity)评分来建立基因表达的统计模型,能够对缺乏强效应量SNPs的基因做出显著预测。此外,这种功能方法允许在驱动差异转录表达的转录因子结合事件方面进行机制解释。这些特征对于发现eQTL和提高估计a的能力是相当重要的GReX(基因调控表达),同时对可能涉及基因差异表达的分子机制提供了见解。

为了保证再现性和资源的可用性,AffiXcan包还包含了训练GReX模型的函数。我们的目标是扩展和增强这些功能,并在未来提供数据包,将GReX植入许多不同的组织,并使用现成的训练模型。

2GReX

2.1什么是GReX?

GReX(基因调控表达)是基因表达(这里定义为转录水平,如RPKM)的组成部分,由个人的遗传学解释。

细胞中转录物的丰度由许多因素决定,包括遗传、环境因素和疾病。它可以对细胞的生理产生影响,并改变其他转录物或蛋白质的表达、它们的活性和调节。由于转录是由转录因子与DNA的结合开始的,部分基因表达可以直接用基因的变异来解释独联体监管区域。

2.2为什么GReX ?

当真实的总表达谱未知或无法测量时,例如在那些无法到达的组织(如大脑)中,估计GReX对执行TWAS是有用的在活的有机体内安全的活组织检查,或者古代基因组。

GReX还可以用来估计基因组对某种状态的构成易感性,这种状态的存在至少部分地受到基因表达的影响。

2.3估计GReX

已经做出了一些努力,以开发利用数学模型从基因型数据预测GReX的计算方法。

gamamazon等人。开发了一种由表达水平的多snp预测组成的方法,其中估计基因的GReX由一个以snp为自变量的加性模型给出。

AffiXcan考虑到与特定个体的基因表达相关的给定基因组区域的所有多态性的贡献。这是通过亲和分数来完成的稍后通知(总结合亲和力)-这些区域和一组转录因子之间。主成分分析(PCA)对这些分数进行,并为每个表达基因拟合线性模型。

我们观察到,大多数AffiXcan能够生成显著模型的基因的GReX不能通过上述方法预测。可以说,这是由于的性质稍后通知分数,这允许考虑所有变异在一个基因组区域的附加小影响。此外,AffiXcan对共享基因和非共享基因的预测优度都显著更高。有关AffiXcan初步测试结果的简要介绍,请参见AffiXcan性能部分。

3.AffiXcan工作流

AffiXcan对GReX的估计是基于一种函数方法,该方法涉及一个分数来量化位置特定权重矩阵(PWM)和DNA片段之间的亲和力总绑定亲和性(稍后通知)。TBA可以用vcf_rider计划,从VCF格式的分阶段基因型开始。

3.1训练模型

下面描述了AffiXcan执行训练阶段所需的输入文件。这个函数affiXcanTrain ()返回一个对象,该对象稍后可以被affiXcanImpute ()来估计GReX。参见帮助(“affiXcanTrain”)了解用法。

3.1.1稍后通知矩阵

作为第一步,AffiXcan对对象执行主成分分析稍后通知(总绑定亲和力)得分为每个监管区域。用户必须提供到的路径rds包含TBA矩阵的文件,格式为MultiAssayExperiment对象。下面是其中一个玩具的例子:

suppressMessages(library(MultiAssayExperiment)) tba <- readRDS(system.file("extdata","training.tba.toydata. "这是一个MultiAssayExperiment对象名称(assays(tba))
## [1] "chr12:57770824-57772573" "chr12:57773858-57774823" "ENSG00000139269.2" "ENSG00000256377.1"

在这种情况下化验(稍后通知)返回一个包含4个矩阵的列表,每个矩阵都包含日志2(TBA)值用于不同的调控区域。矩阵必须使用明确的调节区域标识符来命名。为了说明目的,下面显示了名为“ENSG00000139269.2”的区域TBA矩阵的一小部分。行是个人id,列是PWMs:

化验(稍后通知)$ ENSG00000139269.2 [1:5, 1:4]

TBA值的定心和缩放(可选)在计算主成分之前完成。用户必须指定由AffiXcan选择的主成分解释的最小方差百分比来训练模型的系数,以便在敏感性和过拟合之间实现良好的妥协。

3.1.2矩阵表达式

AffiXcan需要真实的表达式值来训练模型。用户必须指定SummarizedExperiment对象和对象的名称(这里是“值”)分析()它包含了表达式矩阵。下面是一个只有两个基因的玩具例子。在表达矩阵中,行为表达的基因,列为个体的id:

suppressMessages(library(summarizeexperiment)) load("../data/exprMatrix. rdata ") assays(exprMatrix)$values[,1:5]
## hg00101 hg00102 hg00104 hg00106 hg00109 ## ensg00000139269.2 3.56579072 3.8173950 1.2310491 2.06907848 ## ensg00000256377.1 0.07457151 0.3549103 0.1483357 0.2571551 0.01081881

3.1.3基因-区域关联

用户必须提供表达基因和调控区域之间的关联表。每个表达的基因必须至少与一个调控区域相关。为了拟合一个基因的模型,AffiXcan包含了与该基因相关的所有调控区域的选定主成分,例如:

GReX_geneA ~ PC1_regionA1 + PC2_regionA1 + PC3_regionA1 + PC4_regionA1 + PC1_regionA2 + PC2_regionA2…

关联表的头必须包含字符串“REGULATORY_REGION”和“EXPRESSED_REGION”。一个例子如下所示:

负载(“. . /数据/ regionAssoc.RData”)regionAssoc [1:3],

在这里可以观察到,表达基因“ENSG00000139269.2”与三个不同的调控区域相关。表达的基因名称必须与基因中发现的相同矩阵表达式监管区域的名称必须与用于稍后通知矩阵

3.1.4模拟结构协变量

最后,AffiXcan计算每个模型的p值。可以选择将每个个体的总体结构协变量传递给affiXcanTrain纳入模型,以评估GReX的估计是否显著独立于人群的遗传结构。

下面是一个可以用于此目的的R对象的示例,它包含了总体结构的前三个pc:

负载(“. . /数据/ trainingCovariates.RData”)头(trainingCovariates)

如果没有指定总体结构协变量,则模型的p值简单地从模型摘要(model)$fstatistic的f统计量中计算出来

最后对模型的p值进行多重测试的Benjamini-Hochberg校正。

3.2冠GReX

下面描述了AffiXcan执行预测阶段所需的输入文件。这个函数affiXcanImpute ()的输出affiXcanTrain ()来计算个体群体中的估算GReX值。参见帮助(“affiXcanImpute”)了解用法。

3.2.1之上稍后通知矩阵

TBA值的调节区域指的是我们想要估计GReX的人口是需要的。用户必须提供到的路径rds包含TBA矩阵的文件,格式为MultiAssayExperiment对象。描述了这种类型的数据培训阶段部分。

为了一致地应用模型,TBA必须在相同的区域上计算,并使用与训练阶段相同的PWM集。用于命名MultiAssayExperiment对象中存储的TBA矩阵的明确区域id需要与训练阶段使用的区域id相匹配。

3.2.2特征向量

AffiXcan在TBA值和特征向量之间进行矩阵乘积,以获得所选的主成分,这些主成分将在估计GReX时用作变量。特征向量由affiXcanTrain ()当对训练数据集进行主成分分析(PCA)时。用户必须指定存储训练阶段结果的对象。

3.2.3模型的系数

对于每个基因,选择的TBA主成分乘以先前在训练数据集上训练的模型系数affiXcanTrain ().用户必须指定存储训练阶段结果的对象。

3.3最终输出

affiXcanImpute ()返回一个SummarizedExperiment对象,其中包含一个带有估算的GReX值的矩阵。要访问它,我们可以使用assays()$GReX,如下所示。这是一个简单的例子,在115个个体的队列中输入单个基因的GReX。在GReX矩阵中,行为基因,列为个人id:

suppressMessages(library("AffiXcan")) trainingtbapath <- system.file("extdata","training.tba.toydata. "rds", package="AffiXcan") data(exprMatrix) data(regionAssoc) data(trainingCovariates) assay <- "values" training <- affiXcanTrain(exprMatrix=exprMatrix, assay=assay, tbaPaths=trainingTbaPaths, regionAssoc=regionAssoc, cov=trainingCovariates, varExplained=80, scale=TRUE)
## ## AffiXcan:训练模型##—>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
训练线性模型##完成
testingtbapath <- system.file("extdata","test .tba.toydata. "rds", package="AffiXcan") exprmatrix <- affiXcanImpute(tbaPaths=testingTbaPaths, affiXcanTraining=training, scale=TRUE)
## ## AffiXcan:输入基因调控表达(GReX) ##——>计算主成分##——>输入GReX值##完成
grexMatrix <- assays(exprmatrix)$GReX as.data.frame(grexMatrix)[,1:5]

4交叉验证

affiXcanTrain ()可以通过指定参数在k-fold交叉验证模式中使用吗kfold> 0。例如,用kfold= 5时,进行5次交叉验证。

交叉验证模式并不用于生成最终的GReX模型。因此,输出affiXcanTrain ()在交叉验证模式下不能使用affiXcanImpute ()对新数据进行GReX imputation,因为它包含一个有用的报告,用于评估每个折叠中每个基因的预测性能。

在下面的例子中,对虚拟数据执行5次交叉验证:

trainingtbapath <- system.file("extdata","training.tba.toydata. "rds", package="AffiXcan") data(exprMatrix) data(regionAssoc) data(trainingCovariates) assay <- "values" training <- affiXcanTrain(exprMatrix=exprMatrix, assay=assay, tbaPaths=trainingTbaPaths, regionAssoc=regionAssoc, cov=trainingCovariates, varExplained=80, scale=TRUE, kfold=5)
## ## AffiXcan:执行训练与5倍交叉验证(1 / 5)##——>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
——>训练线性模型——>在验证集上计算主成分
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
##——>输入GReX值##——>计算交叉验证R^2 ##完成## ## AffiXcan:执行训练与5倍交叉验证(2 / 5)##——>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
——>训练线性模型——>在验证集上计算主成分
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
##——>输入GReX值##——>计算交叉验证R^2 ##完成## ## AffiXcan:执行训练与5倍交叉验证(3 / 5)##——>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
——>训练线性模型——>在验证集上计算主成分
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
##——>输入GReX值##——>计算交叉验证R^2 ##完成## ## AffiXcan:执行训练与5倍交叉验证(4 / 5)##——>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
——>训练线性模型——>在验证集上计算主成分
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
##——>输入GReX值##——>计算交叉验证R^2 ##完成## ## AffiXcan:执行训练与5倍交叉验证(5 / 5)##——>执行主成分分析
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
——>训练线性模型——>在验证集上计算主成分
##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误##警告:“实验者列表”包含“data.frame”或“DataFrame”,##混合数据类型的潜在错误
##——>输入GReX值##——>计算交叉验证R^2 ##完成

5并行化

AffiXcan进程可能需要一定的时间才能完成,但所有函数都支持并行化。BiocParallel包是并行计算所必需的。

用户可以构造一个BiocParallelParam对象,并在调用时将其作为BPPARAM参数传递affiXcanTrain ()affiXcanImpute (),或保留BPPARAM为默认值以自动并行求值。

6AffiXcan性能

本节的唯一目的是简要展示使用AffiXcan在初步测试中获得的预测性能,以及它与中描述的多snp预测方法的比较gamamazon等人。.更多关于其他数据集和多元模型的进一步工作仍在进行中。

6.1GEUVADIS数据集交叉验证

AffiXcan模型在344名欧洲人后裔的队列中进行了交叉验证,这些人的分期基因型数据和表达数据(ebv转化淋巴细胞的RNA-seq)可用GEUVADIS公共数据集

该队列被随机分为229人的训练集和115人的测试集。训练阶段在训练集上进行,然后将训练后的模型应用于测试集上,以归算GReX。

每个基因只与一个调控区域相关,该调控区域位于一个跨越转录起始位点(TSS)上游和下游的基因组窗口中。所选主成分可解释的TBA最小方差百分比设置为80。

6.2预测性能

通过AffiXcan生成重要模型的基因数量(约3000个)几乎与使用中描述的方法可以估算GReX的基因数量相同gamamazon等人。

预测性能的评估观察平方相关(R2)在每个基因的估算GReX值与实际总表达值之间。R的总体均值2使用AffiXcan获得的值大于使用多重snp方法获得的值(0.099 vs 0.070)。

图中:R2来自AffiXcan的预测值,对于>3000个基因,可以输入GReX,按递增顺序排序。

6.3预测性能比较

值得注意的是,通过这两种方法计算出的估算的GReX基因之间的重叠仅略大于每种方法计算的三分之一(1123)。可以说,这是由于执行稍后通知分数来考虑一个调控区域内所有基因变异的贡献,而不是仅仅考虑那些对基因表达有更大影响的snp。据推测,AffiXcan成功地生成了一个重要的模型来估计基因中的GReX,其中转录表达受到许多变体的影响,每个变体都以较小的效应量贡献了GReX,其中多snp预测方法无法提供良好的统计预测因子。在图中:对于每一个可以用两种方法计算出GReX的基因,一个蓝色的圆被标为坐标(R2从多snp方法的预测,R2来自AffiXcan的预测)

观察平方相关(R2),采用Wilcoxon-Mann-Whitney配对检验来评估R2数值有显著差异。R2AffiXcan的值被证明明显更高:图中:R2价值观:R2来自AffiXcan的预测- R2从多snp方法的预测(计算每个基因的GReX可以通过两种方法)。

6.4结论

综上所述,AffiXcan可以增加因子>1.6对GReX估计的基因数量,同时提高预测的优度。