如何通过Gseapy Enrichr获取各通路对应的完整基因列表
获取Enrichr通路完整基因集合的正确方法
你之前的方法只能拿到输入基因与目标通路的重叠基因,这是因为Enrichr的富集结果默认只展示交集部分。要获取通路的完整基因列表,我们可以直接从GSEAPy的基因集库中提取,具体步骤如下:
1. 下载目标基因集的完整数据
使用gseapy.get_library函数下载你指定的基因集(这里是小鼠的GO_Biological_Process_2021):
import gseapy # 下载小鼠的GO_Biological_Process_2021基因集 full_gene_sets = gseapy.get_library(name='GO_Biological_Process_2021', organism='Mouse')
这个函数会返回一个字典:键是通路的完整名称(比如'fatty acid beta-oxidation (GO:0006635)'),值是该通路对应的全部基因列表。
2. 提取单个目标通路的完整基因
结合你已有的富集结果,直接用通路名称从字典中取出完整基因集合:
# 目标通路名称 target_term = 'fatty acid beta-oxidation (GO:0006635)' # 获取该通路的完整基因列表 full_gene_list = full_gene_sets[target_term] # 可选:统一基因名称格式(和你之前的处理逻辑对齐) full_gene_list = [gene.capitalize() for gene in full_gene_list]
3. 批量处理所有富集通路
如果想一次性获取所有富集到的通路的完整基因,可以遍历富集结果的Term列:
# 创建字典存储每个富集通路的完整基因 enriched_terms_full_genes = {} for term in enr_res.results['Term']: # 用get避免通路名称不匹配的报错 enriched_terms_full_genes[term] = full_gene_sets.get(term, [])
为什么之前的方法不行?
你之前操作的enr_res.results['Genes']列,本质是你的输入基因列表与该通路基因集的交集——Enrichr只会展示这部分重叠基因,而非通路的全部基因。所以想要完整集合,必须直接从基因集库中提取原始数据。
内容的提问来源于stack exchange,提问作者Greenline




