官方文档
❝https://academic.oup.com/bioinformatics/article/39/11/btad672/7342237?login=false https://gitlab.com/vugene/aPEAR/-/blob/main/vignettes/aPEAR-vignette.Rmd?ref_type=heads ❞
加载R包
代码语言:javascript复制install.packages("aPEAR")
library(data.table)
library(tidyverse)
library(clusterProfiler)
library(DOSE)
library(org.Hs.eg.db)
library(aPEAR)
data(geneList)
富集分析
代码语言:javascript复制# 设置随机数种子,确保结果的可重复性
set.seed(42)
# 使用gseGO函数进行基因本体论(GO)的富集分析
# geneList是待分析的基因列表,OrgDb指定了基因的注释数据库,ont指定了本体论类型(这里是'CC',即细胞组分)
enrich <- gseGO(geneList, OrgDb = org.Hs.eg.db, ont = 'CC')
富集分析网络图
代码语言:javascript复制# 设置另一个随机数种子,用于后续的可视化过程
set.seed(654824)
# 创建富集分析的网络图,这里使用enrich@result作为输入数据
enrichmentNetwork(enrich@result)
提取富集分析结果
代码语言:javascript复制# 提取富集分析的结果,并进行数据处理
# 这里首先将结果转换为data.table格式,然后选取前5行,提取特定的列,并对core_enrichment列的内容进行截断处理
enrichmentData <- enrich@result %>%
as.data.table() %>%
.[ 1:5 ] %>%
.[ , list(Description, pathwayGenes = core_enrichment, NES, Size = setSize) ] %>%
.[ , pathwayGenes := str_trunc(pathwayGenes, 20) ]
代码语言:javascript复制# 提取富集分析的完整结果,不进行截断处理
enrichmentData <- enrich@result %>%
as.data.table() %>%
.[ , list(Description, pathwayGenes = core_enrichment, NES, Size = setSize) ]
NES富集网络图
代码语言:javascript复制# 创建基于NES(归一化富集得分)和Size(路径大小)的富集网络图
# colorBy参数指定了节点颜色的依据,nodeSize指定了节点大小的依据,verbose = TRUE表示打印详细信息
p <- enrichmentNetwork(enrichmentData, colorBy = 'NES', nodeSize = 'Size', verbose = TRUE)
基于p值的富集网络图
代码语言:javascript复制# 设置随机数种子,用于可视化的稳定性
set.seed(348934)
# 创建基于p值的富集网络图,这里指定了颜色类型为p值,pCutoff为p值的截断阈值
enrichmentNetwork(enrich@result, colorBy = 'pvalue', colorType = 'pval', pCutoff = -5)
聚类网络图
代码语言:javascript复制# 找出富集分析结果中的路径聚类
# cluster参数指定了聚类方法,这里使用层次聚类,minClusterSize指定了最小聚类大小
clusters <- findPathClusters(enrich@result, cluster = 'hier', minClusterSize = 6)
代码语言:javascript复制# 显示前5个聚类的信息
clusters$clusters[ 1:5 ]
# 提取并显示特定聚类的路径
# 这里首先提取前5个聚类的路径,然后计算这些路径之间的相似度
pathways <- clusters$clusters[ 1:5, Pathway ]
clusters$similarity[ pathways, pathways ]
# 设置随机数种子,用于图形的稳定性
set.seed(238923)
# 绘制路径聚类的图形
# 这里指定了富集结果、相似度矩阵、聚类信息以及其他绘图参数
plotPathClusters(
enrichment = enrich@result,
sim = clusters$similarity,
clusters = clusters$clusters,
fontSize = 4,
outerCutoff = 0.01,
drawEllipses = TRUE
)