感兴趣的某个基因被注释到什么通路了?

org.Hs.eg.db R包的主要用途

org.Hs.eg.db — Organism Homo sapiens Entrez Gene database
用途:提供人类基因的各种注释信息,主要基于 Entrez Gene ID(NCBI 提供的基因编号系统)。
数据来源:整合自多个数据库,包括:

NCBI(Entrez Gene)
Ensembl
UCSC
UniProt
GO(Gene Ontology)
KEGG
HGNC(HUGO Gene Nomenclature Committee)
OMIM 等

以通过它获取一个基因的:
注释内容
SYMBOL 基因符号(如 TP53)
ENTREZID Entrez 基因编号(如 7157)
GENENAME 基因名称(如 tumor protein p53)
ENSEMBL Ensembl 基因 ID(如 ENSG00000141510)
REFSEQ RefSeq 编号
UNIPROT UniProt 蛋白编号
GO Gene Ontology 注释(BP/CC/MF)
KEGG 关联的 KEGG 通路信息
OMIM 遗传疾病关联信息
一般用途如下,主要是用于对基因或蛋白的通用的注释。

DEG_entrezid = mapIds(x = org.Hs.eg.db,
                      keys = diffrent_DEGs1,
                      keytype = "SYMBOL",
                      column = "ENTREZID") #存在NA
table(is.na(DEG_entrezid))
DEG_entrezid <- na.omit(DEG_entrezid)
GO_BP = enrichGO(gene = DEG_entrezid,
                 OrgDb = org.Hs.eg.db,
                 keyType = "ENTREZID",
                   ont = "BP",     #'BP','CC','MF'
                 pvalueCutoff = 0.05,
                 qvalueCutoff = 0.05)

如何查看某个基因富集在不同数据库中的什么通路?

数据库 通路类别 支持方式 R 包或平台
GO BP/CC/MF ✅ org.Hs.eg.db + GO.db
KEGG Pathway ✅ clusterProfiler::enrichKEGG 或 KEGGREST
Reactome Pathway ✅ ReactomePA
WikiPathways Pathway ✅ rWikiPathways
MSigDB 各类集合 ✅ msigdbr
BioCarta Pathway ✅(已合入 MSigDB) msigdbr

感兴趣的某个基因被注释到什么通路了?(前5个数据库)

# 安装并加载
if (!require("ReactomePA")) BiocManager::install("ReactomePA")
if (!require("org.Mm.eg.db")) BiocManager::install("org.Mm.eg.db")  # 小鼠数据库

library(ReactomePA)
library(org.Mm.eg.db)

# SYMBOL → ENTREZID
genes <- c("#")
entrez_ids <- mapIds(org.Hs.eg.db, 
                     keys = genes, 
                     column = "ENTREZID", 
                     keytype = "SYMBOL", 
                     multiVals = "first")###存在一对多的注释时,只选取第一个注释
entrez_ids
# 提取 GO 注释
go_annot <- select(org.Hs.eg.db,
                   keys = entrez_ids,
                   columns = c("GO", "ONTOLOGY"),
                   keytype = "ENTREZID")

# 加 GO 名称
go_annot$TERM <- Term(go_annot$GO)

# 只要 BP(生物过程)
go_bp <- subset(go_annot, ONTOLOGY == "BP")




library(KEGGREST)


kegg_paths <- lapply(entrez_ids, function(id) {
  keggLink("pathway", paste0("hsa:", id))
})
names(kegg_paths) <- names(entrez_ids)

kegg_paths
kegg_ids <- sub("path:", "", unique(unlist(kegg_paths)))

# 用 tryCatch 安全获取 KEGG 通路名称
get_kegg_info <- function(pid) {
  tryCatch({
    info <- keggGet(pid)[[1]]
    data.frame(pathway_id = pid,
               pathway_name = info$NAME,
               stringsAsFactors = FALSE)
  }, error = function(e) {
    # 如果报错,则返回 NA 行
    data.frame(pathway_id = pid,
               pathway_name = NA_character_,
               stringsAsFactors = FALSE)
  })
}

# 应用到所有通路 ID
kegg_df_list <- lapply(kegg_ids, get_kegg_info)
kegg_df <- do.call(rbind, kegg_df_list)

# 加上基因信息
gene_name <- names(kegg_paths)[1]  
kegg_df$gene <- gene_name

# 调整列顺序
kegg_df <- kegg_df[, c("gene", "pathway_id", "pathway_name")]

# 查看结果
print(kegg_df)



library(ReactomePA)

# 查询 Reactome 通路
reactome_pathways <- lapply(entrez_ids, function(id) {
  tryCatch({
    reactome <- ReactomePA::pathway2geneReactome[ReactomePA::pathway2geneReactome$gene_id == id, ]
    merge(reactome, ReactomePA::reactomePATHID2NAME, by = "pathway_id")
  }, error = function(e) NULL)
})
names(reactome_pathways) <- names(entrez_ids)
###D 和H 在 Reactome 没有通路注释

library("rWikiPathways")
Sys.setenv(http_proxy = "http://127.0.0.1:#####") ##科学上网提供的IP
Sys.setenv(https_proxy = "http://127.0.0.1:#####")
# 返回 WikiPathways 中该基因的所有通路
wikipathways_annots <- lapply(entrez_ids, function(id) {
  rWikiPathways::findPathwaysByXref(system = "L", id = id)
})
names(wikipathways_annots) <- names(entrez_ids)
# 合并成数据框,添加 gene 字段
wikipathways_df <- do.call(rbind, lapply(names(wikipathways_annots), function(gene) {
  pathways <- wikipathways_annots[[gene]]
  if (is.null(pathways) || nrow(pathways) == 0) {
    # 没查到通路,保留一行 NA
    data.frame(gene = gene,
               pathwayId = NA,
               name = NA,
               url = NA,
               stringsAsFactors = FALSE)
  } else {
    # 查到通路,加上 gene 名
    cbind(gene = gene, pathways[, c("id", "name", "url")])
  }
}))

# 重命名列名(可选)
colnames(wikipathways_df) <- c("gene", "pathway_id", "pathway_name", "pathway_url")

# 查看结果
print(wikipathways_df)



library(msigdbr)

# 所有 MSigDB 集合
msig <- msigdbr(species = "Homo sapiens")
msigdb <- msig %>%
  filter(gene_symbol == "##")
print(msigdb[, c("gs_cat", "gs_subcat", "gs_name")])

msigdb_df <- as.data.frame(msigdb[, c("gs_cat", "gs_subcat", "gs_name")])

#把不同数据库的注释合并到一个数据框后输出为csv文件。
# 统一列名处理(添加 source 列,标记数据来源)
wikipathways_df$source <- "WikiPathways"
kegg_df$source <- "KEGG"
go_bp$source <- "GO"
msigdb_df$source <- "MSigDB"

# 转换 GO 数据框列名一致性(可选)
colnames(go_bp)[colnames(go_bp) == "ENTREZID"] <- "gene"

# 获取所有列名集合
all_cols <- unique(unlist(lapply(list(wikipathways_df, kegg_df, go_bp, msigdb_df), colnames)))

# 保证每个数据框都具有相同的列结构
pad_df <- function(df, all_cols) {
  for (col in setdiff(all_cols, colnames(df))) {
    df[[col]] <- NA
  }
  df[, all_cols]
}

# 填补缺失列
wikipathways_df <- pad_df(wikipathways_df, all_cols)
kegg_df <- pad_df(kegg_df, all_cols)
go_bp <- pad_df(go_bp, all_cols)
msigdb_df <- pad_df(msigdb_df, all_cols)

# 空行数据框
blank_row <- as.data.frame(matrix(NA, nrow = 1, ncol = length(all_cols)))
colnames(blank_row) <- all_cols

# 合并并插入空行分隔
combined_df <- rbind(
  wikipathways_df,
  blank_row,
  kegg_df,
  blank_row,
  go_bp,
  blank_row,
  msigdb_df
)

# 写出为 CSV 文件
write.csv(combined_df, "combined_pathway_annotations.csv", row.names = FALSE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值