pathwayPCA:基于主成分分析的通路分析

通路分析已经成为分析高通量组数据的一种有效的策略,通过结合已有的生物学知识(如KEGG数据库),一些基于通路的方法能够测功能相关基因的协调变化,还可以更多地揭示与疾病相关的潜在生物过程。TCGA和CPTAC提供了多种癌型的全面的蛋白质组、基因组和表观基因组的组学数据可用于研究。

背景介绍

由于可用的分子信息数量庞大,主成分分析(PCA)是一种降低数据维数以捕获个体基因或主体变异的方法。特别是,主成分(PCs)以前曾被用作从多重基因表达中提取的sample-specific的特征。然而,当通路中的基因数量较大时,与表型无关的基因可能会引入噪音,模糊基因集关联信号。通常,一个先验定义的通路中只有一个子集的基因参与与表型变异相关的细胞过程,其中子集中的每个基因贡献了一个适度的数量。因此,基因选择是通路分析中的一个重要问题

之前,该团队开发了一种监督的PCA方法(SuperPCA)和一种非监督方法(Adaptive, elas- net, Sparse PCA或AES-PCA)用于基于PC的通路分析中的基因选择。这两种方法都是先进行基因选择,去除不相关的基因,然后再估计pathway-specific PCs,并证明与Fisher’s exact test 、 GSEA 和globalTest 等方法相比在分析基因表达、GWAS和甲基化数据方面性能优越。

本工作开发pathwayPCA分析工具,提供了基因选择、对sample-specific的通路的进行评估和可视化,以及性别特异性通路效应的分析。

pathwayPCA功能

(1)检验通路与二分类、连续或生存表型相关性。

(2)利用SuperPCA和AES-PCA方法提取通路中相关基因。

(3)根据所选基因计算主成分(PCs)。这些评估的潜在变量代表了个体受试者的通路活性,然后可以用于执行综合通路分析,如多组学分析。

(4)提取驱动通路显著性的相关基因以及这些相关基因对应的数据进行进一步深入分析。

(5)通过并行parallel计算提高计算效率,通过S4-类数据对象提高数据安全性。

(6)分析具有复杂实验设计、多协变量、交互效应的研究,如检验男性和女性受试者之间的临床表型通路相关性是否不同。

R包介绍

BiocManager::install("pathwayPCA")library(pathwayPCA)

1. AESPCA_pVals 检验通路关联性

给定一个监督OmicsPath对象(OmicsSurv、OmicsReg或OmicsCateg之一),从组学分析设计矩阵的特征的通路子集中提取第一个k adaptive、elastic-net和sparse主成分(pc),从每个pathway-subset组学分析设计矩阵的特性,测试它们与响应矩阵的关联性,并返回一个每个通路校正后P值的数据框

###加载示例数据data("colonSurv_df")data("colon_pathwayCollection")

colonSurv_df是结肠癌生存数据的一个子集,包含了250名患者的2022个基因中的656个。前两列是总生存时间(OS_time)和死亡指标(OS_event)。

colon_pathwayCollection是一个典型的通路基因子集的例子。包括两种元素:一个列表(colon_pathwayCollection$pathways)是15个通路及其对应的通路中基因;一个(colon_pathwayCollection$TERMS)是15个通路的名字。

###建立OmicsSurv对象colon_Omics <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)], #删除2、3列  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:3], #生存数据  respType = "surv")###计算通路P值colonSurv_aespc <- AESPCA_pVals(  object = colon_Omics,  numReps = 0,  #估计p值需要多少次置换  #若numReps = 0,P值参数化;  #numReps > 0,非参数,返回基于指定随机抽样次数的置换P值  parallel = TRUE,  #是否并行完成计算  numCores = 2,  #parallel = TRUE的情况下,应该使用多少cores来进行计算  adjustpValues = TRUE,  #是否多重比价校正P值  adjustment = c("Hoch", "SidakSD")  #校正P值方法)

结果输出类aespcOut的结果列表,包含三个组成:

(1)pVals_df:一个通路及P值、校正P值的数据框

(2)PCs_ls:每个通路的第一numPCs 打分向量

(3)loadings_ls:每个通路的第一numPCs特征loading 向量

 

2.CreateOmics对组学数据生成类对象

##建立OmicsPathway对象#用于质谱分析或生物测定数据和基因通路列表的S4类colon_OmicsPath <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection)##建立OmicsSurv对象(上面1.中使用的就是这个对象)colon_OmicsSurv <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:3],  respType = "surv")##建立OmicsReg对象colon_OmicsReg <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:2],  respType = "reg")##建立OmicsCateg对象colon_OmicsCateg <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, c(1,3)],  respType = "cat")

3. CreateOmicsPath

CreateOmicsPath建立类OmicsPathway、OmicsSurv、OmicsReg或OmicsCateg的有效对象。

CreateOmicsPath(  assayData_df = colonSurv_df[, -(1:3)],  sampleIDs_char = colonSurv_df$sampleID,  pathwayCollection_ls = colon_pathwayCollection  #pathwayCollection_ls有已知2 - 3个元素的基因通路集合列表)CreateOmicsSurv(  assayData_df = colonSurv_df[, -(1:3)],  sampleIDs_char = colonSurv_df$sampleID,  pathwayCollection_ls = colon_pathwayCollection,  eventTime_num = colonSurv_df$OS_time,  #与最后一次观察时间对应的N个观测值的数值向量  eventObserved_lgl = as.logical(colonSurv_df$OS_event)  #N个观测值的结尾事件,eventObserved_lgl=FALSE,观测值删失)CreateOmicsReg(  assayData_df = colonSurv_df[, -(1:3)],  sampleIDs_char = colonSurv_df$sampleID,  pathwayCollection_ls = colon_pathwayCollection,  response_num = colonSurv_df$OS_time  #长度为N的factor向量,一般回归练习中的因变量)CreateOmicsCateg(  assayData_df = colonSurv_df[, -(1:3)],  sampleIDs_char = colonSurv_df$sampleID,  pathwayCollection_ls = colon_pathwayCollection,  response_fact = as.factor(colonSurv_df$OS_event)  #长度为N的factor向量,一个广义线性回归练习的因变量)

 

4.CreatePathwayCollection

建立一个pathwayCollection-类对象

data("colon_pathwayCollection")CreatePathwayCollection(  sets_ls = colon_pathwayCollection$pathways,  TERMS = colon_pathwayCollection$TERMS)

5.getPathPCLs

#提取PCs和Loadings

getPathPCLs(  colon_superpc,  "KEGG_PENTOSE_PHOSPHATE_PATHWAY")

 

 

6. getPathpVals

#计算有监督PCA的通路P值colon_superpc <- SuperPCA_pVals(  colon_Omics,  numPCs = 2,  #每个通路提取PCs数量  parallel = TRUE,  numCores = 2,  adjustment = "BH")#提取Top 5通路P值getPathpVals(  colon_superpc,  numPaths = 5  #Top通路数量)

 

#提取 p-Values < 0.01通路getPathpVals(  colon_superpc,  alpha = 0.01)

 

7. LoadOntoPCs

LoadOntoPCs从训练集中加载向量的列表,计算测试数据集的PCs.

###  Project Data onto Pathway First PCs  ###

LoadOntoPCs(

design_df = colonSurv_df,

loadings_ls = colonSurv_aespc$loadings_ls

)

 

8.  SE2Tidy整理总结实验分析

从 SummarizedExperiment-class-对象中提取实验信息,将其转置,并将其作为包含实验测量值、特征名称和样本id的整洁数据框返回。

#加载airway数据BiocManager::install("airway")library(airway)library(SummarizedExperiment)data(airway, package = "airway")

 

airway_df <- SE2Tidy(airway)

输出:

9. 获取和编辑数据

(1)SubsetOmicsPath

从OmicsPathway 中提取assayData_df、sampleIDs_char或pathwayCollection

data("colonSurv_df")data("colon_pathwayCollection")colon_Omics <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection)getAssay(colon_Omics)

 

getPathwayCollection(colon_Omics)

 

(2)SubsetOmicsResponse

从OmicsSurv中提取response_numh或response_fact

colon_Omics <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, c(1, 2)],  respType = "reg")getResponse(colon_Omics)

 

(3)SubsetOmicsSurv

从OmicsSurv中提取 eventTime_num或eventObserved_lgl

colon_Omics <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:3],  respType = "survival")getEventTime(colon_Omics)

 

getEvent(colon_Omics)

 

4)SubsetPathwayCollection

按通路提取数据

data("colon_pathwayCollection")colon_pathwayCollection[["KEGG_RETINOL_METABOLISM"]]

(5)SubsetPathwayData

提取Pathway-Specific 数据。给定 Omics 对象和通路名称,返回试验中的-omes和响应数据框

colon_Omics <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:3],  respType = "survival")SubsetPathwayData(  colon_Omics,  "KEGG_RETINOL_METABOLISM")

 

 

10. SuperPCA_pVals有监督的PCA检验通路

给定一个监督的OmicsPath对象(OmicsSurv、OmicsReg或OmicsCateg中的一个),从组学试验设计矩阵的每个通路子集中提取前k个主成分(PCs),测试它们与响应矩阵的关联,并返回每个通路校正p值的数据框。

colon_OmicsSurv <- CreateOmics(  assayData_df = colonSurv_df[, -(2:3)],  pathwayCollection_ls = colon_pathwayCollection,  response = colonSurv_df[, 1:3],  respType = "surv")colonSurv_superpc <- SuperPCA_pVals(  object = colon_OmicsSurv,  parallel = TRUE,  numCores = 2,  adjustpValues = TRUE,  adjustment = c("Hoch", "SidakSD"))
小编总结
通路分析是生信分析中必不可少的一部分,那么重点是怎样让你的工作准确有意义,pathwayPCA能够识别通路特异的主成分,使通路分析更加精细,还提供了各种分析功能。
生物信息学

药物优化算法-PriorCD

2020-8-28 4:30:50

生物信息学

deconstructSigs突变Signature分析

2020-8-28 5:00:09

加入Q群
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索