前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pathwayPCA:基于主成分分析的通路分析

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

作者头像
作图丫
发布2022-03-29 09:43:17
1.5K0
发布2022-03-29 09:43:17
举报
文章被收录于专栏:作图丫

导语

GUIDE ╲

通路分析已经成为分析高通量组数据的一种有效的策略,通过结合已有的生物学知识(如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包介绍

代码语言:javascript
复制
BiocManager::install("pathwayPCA")
library(pathwayPCA)

1. AESPCA_pVals 检验通路关联性

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

代码语言:javascript
复制
###加载示例数据
data("colonSurv_df")
data("colon_pathwayCollection")

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

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

代码语言:javascript
复制
###建立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对组学数据生成类对象

代码语言:javascript
复制
##建立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的有效对象。

代码语言:javascript
复制
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-类对象

代码语言:javascript
复制
data("colon_pathwayCollection")
CreatePathwayCollection(
  sets_ls = colon_pathwayCollection$pathways,
  TERMS = colon_pathwayCollection$TERMS
)

5.getPathPCLs

#提取PCs和Loadings

代码语言:javascript
复制
getPathPCLs(
  colon_superpc,
  "KEGG_PENTOSE_PHOSPHATE_PATHWAY"
)

6. getPathpVals

代码语言:javascript
复制
#计算有监督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通路数量
)
代码语言:javascript
复制
#提取 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的整洁数据框返回。

代码语言:javascript
复制
#加载airway数据
BiocManager::install("airway")
library(airway)
library(SummarizedExperiment)
data(airway, package = "airway")
代码语言:javascript
复制
airway_df <- SE2Tidy(airway)

输出:

9. 获取和编辑数据

(1)SubsetOmicsPath

从OmicsPathway 中提取assayData_df、sampleIDs_char或pathwayCollection

代码语言:javascript
复制
data("colonSurv_df")
data("colon_pathwayCollection")
colon_Omics <- CreateOmics(
  assayData_df = colonSurv_df[, -(2:3)],
  pathwayCollection_ls = colon_pathwayCollection
)
getAssay(colon_Omics)
代码语言:javascript
复制
getPathwayCollection(colon_Omics)

(2)SubsetOmicsResponse

从OmicsSurv中提取response_numh或response_fact

代码语言:javascript
复制
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

代码语言:javascript
复制
colon_Omics <- CreateOmics(
  assayData_df = colonSurv_df[, -(2:3)],
  pathwayCollection_ls = colon_pathwayCollection,
  response = colonSurv_df[, 1:3],
  respType = "survival"
)
getEventTime(colon_Omics)
代码语言:javascript
复制
getEvent(colon_Omics)

(4)SubsetPathwayCollection

按通路提取数据

代码语言:javascript
复制
data("colon_pathwayCollection")
colon_pathwayCollection[["KEGG_RETINOL_METABOLISM"]]

(5)SubsetPathwayData

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

代码语言:javascript
复制
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值的数据框。

代码语言:javascript
复制
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能够识别通路特异的主成分,使通路分析更加精细,还提供了各种分析功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档