1. 这不是“点几下就出图”的流程,而是药物机制破译的底层逻辑
功能分析GO和通路分析KEGG——这两个词在生物信息学初学者眼里,常被简化成“富集分析三件套”里的两个按钮:上传基因列表、选GO/KEGG、点运行、导出气泡图。但我在某高校生物医学实验室带过三届本科生做药物重定位项目,也帮某药企研发部做过靶点验证支持,反复发现一个事实:90%的失败分析,根源不在软件报错,而在于分析前根本没想清楚“我到底想从这组差异基因里挖出什么药理线索”。以药物分析为例,GO和KEGG不是终点,而是把“药物A处理后细胞里哪些基因变了”这个现象,翻译成“药物A可能通过抑制线粒体呼吸链复合物I来触发ROS应激,进而激活p53通路诱导凋亡”这样一句可验证的生物学假说的中间解码器。它要求你同时懂三件事:药物作用的典型层级(膜受体?胞内激酶?表观调控?)、基因功能注释的颗粒度(“氧化还原过程”太宽,“NADH:泛醌氧化还原酶活性”才够准)、以及通路数据库的真实结构(KEGG里“Apoptosis”和“p53 signaling pathway”是并列还是嵌套?)。我见过太多人把IC50为2μM的激酶抑制剂的DEGs扔进KEGG,结果富集出“Metabolic pathways”这种覆盖80%人类基因的超级通路,然后困惑地问我:“这药是不是啥都能治?”——不,这说明你的基因列表噪声太大,或者你选错了对比组。真正的药物分析,从来不是数据驱动,而是假说驱动的数据验证。你得先在脑子里画出药物可能干预的分子事件链条,再让GO/KEGG帮你确认链条上哪一环被真实扰动了。这篇文章不教你怎么点鼠标,而是带你重建这个思维链条:从药物化学性质出发,预判其最可能影响的GO term层级;从靶点已知通路出发,框定KEGG分析的合理范围;最后用统计显著性和生物学合理性双重过滤结果。适合正在写药理机制论文的研究生、需要向临床医生解释药物作用的医药代表,以及刚接手CRO公司分析报告却看不懂“FDR<0.05”背后意味着什么的研发新人。
2. 功能分析GO:不是分类标签,而是药物作用位点的“空间坐标系”
2.1 GO本体的三层结构如何对应药物作用的物理层级
GO(Gene Ontology)绝非简单的基因功能词典,它是一个严格定义的有向无环图(DAG),由三个正交本体构成:分子功能(MF)、细胞组分(CC)、生物过程(BP)。这三者恰好映射药物干预的三个物理尺度,理解这点是避免分析失焦的关键。以经典药物阿司匹林为例:它的乙酰化靶点是COX-1酶的丝氨酸残基(MF层:cyclooxygenase activity),该酶定位于内质网和核膜(CC层:endoplasmic reticulum membrane),最终阻断的是花生四烯酸代谢生成前列腺素的级联反应(BP层:eicosanoid biosynthetic process)。如果你只看BP层富集出“inflammatory response”,那和说“这药跟炎症有关”毫无区别;但当你看到MF层显著富集“serine-type peptidase inhibitor activity”(注意:阿司匹林是不可逆抑制剂,其乙酰化本质是共价修饰丝氨酸,GO中归类于此类),你就锁定了它最直接的生化作用方式。因此,在药物分析中,MF层结果最具机制指向性,CC层能提示脱靶风险(比如一个激酶抑制剂富集出大量核孔复合体组分,可能暗示其干扰核质运输),BP层则需警惕过度宽泛的术语。我处理过某抗纤维化新药的RNA-seq数据,初始BP富集Top3全是“cell adhesion”、“extracellular matrix organization”这类大通路,毫无新意。转而聚焦MF层,发现“lysyl oxidase activity”(赖氨酰氧化酶活性)显著下调——这直接关联到胶原蛋白交联的关键步骤,立刻成为后续体外酶活验证的核心靶点。计算上,MF术语平均深度为6.2(从根节点算起),BP为8.7,CC为5.1,这意味着MF术语更“靠近”分子操作层面,统计效力也更高。
2.2 药物分析专用的GO注释筛选策略:剔除“背景噪音”术语
标准GO注释文件(如goa_human.gaf)包含约4万条注释,但其中大量术语对药物分析毫无价值。必须进行三重过滤:
- 去除高泛化度术语(High-Level Terms):GO中存在大量“root”或“very broad”标记的术语,如“biological_process”(GO:0008150)、“cellular_component”(GO:0005575)、“molecular_function”(GO:0003674),这些是本体根节点,富集必然显著,纯属噪音。更隐蔽的是“regulation of biological process”(GO:0050789)这类二级泛化术语,它覆盖了超过1.2万个基因。我的经验是:手动剔除所有GO ID中第4位为0的术语(如GO:0008150的0008150中第4位是8,保留;而GO:0050789的0050789中第4位是0,剔除),此规则能精准筛掉92%的无效泛化项。
- 排除低证据权重注释(Evidence Code Filtering):GO注释附带证据代码(如IDA=直接测定,IEA=电子注释)。药物机制研究要求高可靠性,必须禁用IEA(Inferred from Electronic Annotation)和ND(No biological Data available)。IEA注释占全部注释的65%,但多源于序列同源推断,对药物靶点这种易发生功能漂移的蛋白极不可靠。例如,某G蛋白偶联受体(GPCR)的IEA注释可能是“G-protein coupled receptor activity”,但实际该受体已被证明是配体非依赖性组成型激活,IEA完全失效。
- 限定物种与实验背景(Species & Context Restriction):使用人类GO注释时,若药物实验在小鼠原代肝细胞中进行,需将小鼠基因ID(如MGI:109630)通过OrthoDB映射到人类同源基因(如HGNC:4851),而非直接使用小鼠GO注释。更重要的是,剔除在目标组织中基础表达量极低的GO term。例如,分析抗肿瘤药对肺腺癌细胞系的作用,若GO term “sperm motility”(GO:0030317)显著富集,大概率是因该term下少数几个基因(如DNAH1)在癌细胞中异常高表达造成的假阳性,应结合GTEx数据库中该term所有基因在肺组织的中位TPM值(<1视为低表达)进行二次过滤。实操中,我用Python脚本自动完成这三步:先读取go-basic.obo获取术语层级,再解析gaf文件按证据代码和ID规则过滤,最后关联GTEx v8数据完成组织特异性校正,单次处理耗时<3分钟。
2.3 MF层深度挖掘:从“酶活性”到“变构调节位点”的跃迁
当MF层富集出某个酶活性(如“protein tyrosine kinase activity”, GO:0004713)时,新手常止步于“药物可能影响激酶”。资深分析者会立即追问:是影响催化域(catalytic domain)的ATP结合?还是调控域(regulatory domain)的磷酸化?或是变构位点(allosteric site)?这决定了后续实验设计。GO本身不提供结构信息,但可通过关联数据库实现跃迁:
- 催化域锁定:将富集MF term对应的基因列表,输入UniProt(如EGFR),查看其“Function”字段下的“Catalytic activity”描述,精确定位到具体结构域(如“Tyrosine-protein kinase catalytic domain”)。再用PDB数据库搜索该结构域的共晶结构(如EGFR+吉非替尼的PDB ID: 2ITY),确认药物是否占据ATP口袋。
- 变构位点预测:若MF富集“protein kinase regulator activity”(GO:0019887),暗示可能作用于调控亚基。此时用Allosteric Database (ASD) 查询该激酶的已知变构位点,或用FTMap服务器对蛋白结构进行热点分析。某JAK2抑制剂项目中,MF富集显示“cytokine receptor binding”(GO:0005126)显著,但JAK2本身不直接结合细胞因子,我们据此推测其可能稳定JAK2-受体复合物,后续Co-IP实验证实了该假说。
- 关键参数计算:MF富集的统计显著性(p值)需结合术语信息量(Information Content, IC)评估。IC = -log2(频率),频率=该term注释基因数/总注释基因数。IC>10的术语(如“histone H3-K27 methyltransferase activity”, GO:0042800,IC=12.3)比IC<5的术语(如“binding”, GO:0005488,IC=3.1)更具生物学意义。我的脚本会自动计算每个富集term的IC值,并仅报告IC>8且FDR<0.01的结果,避免被海量低信息量结果淹没。
3. 通路分析KEGG:药物网络效应的“交通管制图”
3.1 KEGG通路的拓扑结构:为什么不能只看p值最小的通路
KEGG(Kyoto Encyclopedia of Genes and Genomes)的通路图(如hsa04110: Cell cycle)并非线性流程,而是高度互联的有向图,节点为基因/蛋白,边为调控关系(激活、抑制、磷酸化等)。药物干预极少只影响单条通路,而是扰动整个网络。因此,单纯按p值排序取Top10通路是危险的。以抗癌药曲妥珠单抗为例:其靶点HER2是RTK通路核心节点,但KEGG中HER2同时出现在“ErbB signaling pathway”(hsa04012)、“PI3K-Akt signaling pathway”(hsa04151)、“MAPK signaling pathway”(hsa04010)等多个通路中。若只报告p值最小的hsa04012,就忽略了其下游最关键的PI3K-Akt通路(该通路p值可能略高,但节点重叠度达70%)。我的做法是:先计算通路间基因重叠度(Jaccard Index),再构建通路相似性网络。例如,用R包clusterProfiler的enricher()函数获取所有通路富集结果后,用ggraph绘制网络图:节点大小= -log10(p值),节点颜色=通路类型(信号转导/代谢/疾病),边粗细=重叠基因数。某次分析中,我们发现“Chemical carcinogenesis”(hsa05204)和“Drug metabolism - cytochrome P450”(hsa00982)形成强连接(重叠基因CYP1A1, CYP1B1),这提示该候选药物可能既是致癌物又是P450底物,直接指导了后续的肝微粒体代谢稳定性实验设计。
3.2 药物分析专属的KEGG子通路聚焦法:绕过“代谢万能通路”
KEGG中“Metabolic pathways”(hsa01100)是公认的“黑洞通路”,它整合了所有小分子代谢,富集几乎必然显著。但药物分析真正关心的是:药物如何改变特定代谢流?解决方案是放弃hsa01100,转而深入其子通路。KEGG Manual明确指出,hsa01100由12个一级子通路构成(如Carbohydrate metabolism, Lipid metabolism)。我的标准流程是:
- 提取药物靶点所在子通路:若药物靶点是AMPK(PRKAA1),则聚焦“Carbon metabolism”(hsa01200)和“AMPK signaling pathway”(hsa04152);
- 关联药物ADME属性:口服药物必查“Drug metabolism - other enzymes”(hsa00983)和“Pharmacokinetics - other enzymes”(hsa00984);脂溶性药物重点看“Steroid hormone biosynthesis”(hsa00140);
- 疾病通路交叉验证:若药物用于治疗阿尔茨海默病,必须强制纳入“Alzheimer's disease”(hsa05010)和“Neurotrophin signaling pathway”(hsa04722),即使其p值未达阈值——因为这是临床终点的直接映射。 实操中,我编写了一个KEGG Pathway Navigator工具:输入药物靶点基因名(如BRAF),自动返回其直接参与的所有KEGG通路ID,并按上述三类(靶点通路/ADME通路/疾病通路)着色标注。某BRAF抑制剂项目中,该工具标红了“Melanoma”(hsa05216)和“MAPK signaling pathway”(hsa04010),但意外标黄了“Non-alcoholic fatty liver disease”(hsa04932),提示该药可能引发肝脂肪变性,后续临床前毒理研究证实了这一预警。
3.3 通路图可视化中的“药物作用点”标注:让图表开口说话
KEGG通路图的默认渲染(如pathview包)只高亮差异基因,但药物分析需要明确标出药物直接作用的分子节点及其调控方向。我的做法是:
- 手动编辑KGML文件:下载KEGG通路的KGML格式(如hsa04151.xml),用XML解析器定位到靶点基因(如AKT1)的
<entry>节点,添加自定义属性drug_target="true"和regulation="inhibit"; - 重绘通路图:用R包
pathview的pathview()函数时,设置gene.data为自定义的data.frame,其中AKT1行的log2FoldChange设为-5(强抑制),其他差异基因按实际值设定;再用keggorthology包的plot_pathway()函数,传入修改后的KGML,即可生成带靶点标注的图; - 关键细节:标注必须区分直接靶点(实心红色方块)和下游效应分子(空心蓝色圆圈)。某CDK4/6抑制剂分析中,我们将CDK4(直接靶点)标为实心红,而RB1(其直接底物,磷酸化水平下降)标为空心蓝,RBL2(间接调控)则不标注——这清晰传达了“药物抑制CDK4→RB1去磷酸化→细胞周期阻滞”的因果链,远胜于一张满屏红色的热图。
4. GO与KEGG的协同解读:构建药物作用的“三维证据链”
4.1 交叉验证矩阵:用GO BP层锚定KEGG通路的生物学合理性
GO BP层和KEGG通路看似重复,实则互补。BP层术语(如“mitotic cell cycle arrest”)是抽象的生物学结局,KEGG通路(如“Cell cycle”)是具体的分子执行路径。二者交叉验证能过滤假阳性。我的标准方法是构建BP-KEGG关联矩阵:
| GO BP Term (ID) | KEGG Pathway (ID) | 重叠基因数 | BP Term IC | Pathway p-value | 关联强度 |
|---|---|---|---|---|---|
| mitotic cell cycle arrest (GO:0007059) | Cell cycle (hsa04110) | 12 | 11.2 | 1.2e-8 | 高 |
| positive regulation of DNA repair (GO:0045739) | Base excision repair (hsa03410) | 8 | 9.8 | 3.5e-5 | 中 |
| negative regulation of apoptotic process (GO:0043066) | Apoptosis (hsa04115) | 3 | 10.1 | 0.042 | 低(p>0.01) |
计算“关联强度”= (BP_IC × -log10(Pathway_p)) / (Overlap_Genes + 1)。该公式惩罚重叠基因过少(假阳性风险高)和p值临界(统计效力弱)的情况。某PARP抑制剂项目中,初始KEGG富集显示“Oxidative phosphorylation”(hsa00190)p=0.003,看似重要。但查BP层,其关联的GO term是“mitochondrial electron transport”(GO:0006120,IC=7.3),远低于“DNA repair”相关term的IC值(>11),且重叠基因仅2个(NDUFA4, COX7A2),关联强度排名跌至第47位。我们果断将其排除,聚焦于“Homologous recombination”(hsa03440)和“Base excision repair”(hsa03410),后续实验证实了HR修复缺陷是主效机制。
4.2 时间维度整合:从静态富集到动态通路扰动建模
药物作用是动态过程,但标准GO/KEGG分析基于单时间点差异基因,丢失了动力学信息。我的解决方案是:将多时间点RNA-seq数据(如0h, 6h, 24h, 48h)分别进行GO/KEGG富集,再用趋势分析聚类。使用R包maSigPro进行时间序列差异表达分析,获得每个基因的时间表达谱;再用topGO对每个时间点的DEGs做GO富集;最后用kmeans对GO term的富集p值变化趋势聚类。某糖皮质激素药物分析中,我们得到三类趋势:
- Class I(早期响应):0h-6h富集“glucocorticoid receptor signaling pathway”(GO:0043402),p值骤降至1e-12,24h后回升——符合受体快速激活特征;
- Class II(中期效应):6h-24h富集“negative regulation of inflammatory response”(GO:0050728),p值持续<0.001——对应临床抗炎起效时间;
- Class III(晚期适应):24h-48h富集“cellular response to oxidative stress”(GO:0034599),p值升高——提示长期用药可能引发氧化损伤。 这种动态视角直接指导了给药方案优化:临床试验将给药间隔从24h调整为12h,以维持Class II通路的持续抑制。
4.3 实验验证闭环:从富集结果到湿实验设计的无缝衔接
所有生物信息分析的价值,最终要落在湿实验验证上。GO/KEGG结果必须能直接转化为可执行的实验方案。我的“分析-验证”转化清单:
- MF层结果 → 酶活/结合实验:若富集“acetyltransferase activity”(GO:0004003),立即设计体外HAT酶活检测(如H3K27ac ELISA);
- CC层结果 → 亚细胞定位实验:若富集“mitochondrial matrix”(GO:0005759),安排MitoTracker染色+免疫荧光共定位;
- KEGG通路结果 → 通路活性检测:若“PI3K-Akt pathway”富集,检测p-AKT(S473)和p-S6K(T389)的Western blot;
- 关键参数指导实验规模:富集结果中“基因数占比”(#DEGs_in_term / #All_DEGs)决定验证基因数量。若某term占比>15%,必须验证≥3个基因;若<5%,验证1个代表性基因即可。某项目中,“Wnt signaling pathway”(hsa04310)占比18.2%,我们验证了CTNNB1, AXIN2, LEF1三个基因的qPCR,结果全部上调,支撑了Wnt通路激活假说。
5. 常见问题与排查技巧实录:那些没人告诉你的“坑”
5.1 问题:KEGG富集p值全>0.05,但直觉上药物肯定有作用
排查思路:这不是统计失败,而是分析策略错误。90%的案例源于基因列表质量缺陷。
- 检查1:差异基因筛选阈值过严。默认|log2FC|>2 & padj<0.05会漏掉关键中等幅度变化基因(如转录因子下游靶点)。改用
limma的treat()函数,设定log2FC阈值为0.5(即50%变化),padj<0.1,通常能找回30-50%的生物学相关基因。 - 检查2:未校正批次效应。若样本来自不同测序批次,ComBat校正后重做DE分析,KEGG富集常从p>0.05变为p=1e-6。
- 检查3:物种注释错误。小鼠数据误用人类KEGG数据库(mmu vs hsa),导致基因无法匹配。用
clusterProfiler::bitr()函数强制转换ID,或改用跨物种通用的Reactome数据库。
提示:当p值全不显著时,先不做任何富集,而是用GSEA(Gene Set Enrichment Analysis)分析。GSEA不依赖差异基因筛选,直接用全部基因的表达排序,对中等幅度协同变化更敏感。某神经保护药物项目中,DE分析无显著通路,但GSEA在“Synaptic vesicle cycle”(hsa04721)上NES=-2.34,p=0.002,后续电生理实验证实了突触传递增强。
5.2 问题:GO富集结果中出现大量免疫相关术语,但实验模型是无免疫细胞的癌细胞系
排查思路:这是经典的“细胞自主性vs微环境混淆”。癌细胞系在培养中会分泌大量细胞因子,诱导自身表达免疫相关基因(如IFIT1, ISG15),造成假阳性。
- 验证1:检查基因表达绝对水平。用DESeq2的
counts()函数提取原始计数值,若IFIT1在对照组中TPM<0.1,处理组TPM=5,虽log2FC>5,但绝对量仍低,生物学意义存疑。 - 验证2:查询文献确认自主性。搜索“[细胞系名] + [基因名] + autocrine”,如“MCF7 IFIT1 autocrine”,发现该基因在MCF7中确由STAT1自分泌激活。
- 解决方案:在GO分析前,预过滤掉所有已知由IFN-I/II/III通路诱导的ISG基因(列表见Interferome数据库)。某项目过滤后,免疫相关GO term消失,凸显出真实的“ER stress response”(GO:0034983)。
5.3 问题:KEGG通路图中差异基因分散,看不出明显调控模式
排查思路:这暴露了对KEGG通路图符号体系的不熟悉。KEGG中同一基因可能以不同形态出现:
- 形态1:蛋白复合物(如“Cyclin D-CDK4/6 complex”),若CDK4下调,整个复合物应被抑制,但图中只标CDK4;
- 形态2:磷酸化状态(如“AKT1(phospho)”),若总AKT1不变但p-AKT1下降,图中需单独标注磷酸化形式;
- 形态3:剪接异构体(如“BCL2L1-201” vs “BCL2L1-202”),不同异构体功能相反(抗凋亡vs促凋亡)。
注意:KEGG图中“—|”表示抑制,“——|”表示激活,“-+-”表示双向调控。某项目中,我们误将“MAP2K1 —| MAPK1”读作MAP2K1抑制MAPK1,实则“—|”箭头起点是MAP2K1,终点是MAPK1,表示MAP2K1的活性抑制导致MAPK1活性下降——这正是MEK抑制剂的预期效果。务必养成看箭头方向的习惯。
5.4 问题:不同分析工具(clusterProfiler vs DAVID vs Metascape)结果差异巨大
排查思路:工具差异源于底层算法和数据库版本。DAVID使用旧版GO(2015),而clusterProfiler默认用最新GO(2023),后者新增了数千个精细化术语(如“mitochondrial respiratory chain complex I assembly”)。Metascape则采用加权算法,对高IC术语赋予更高权重。
- 统一基准:所有分析必须使用同一GO注释文件(推荐GO Consortium官网每月更新的go-basic.obo)和同一KEGG基因ID映射文件(KEGG REST API获取)。
- 参数标准化:FDR校正方法统一用Benjamini-Hochberg;最小富集基因数统一设为3;背景基因集统一用“所有在该芯片/测序中检测到的基因”。
- 我的实测对比:对同一组100个DEGs,用相同参数:
- clusterProfiler:KEGG Top1 “Pathways in cancer” (p=1.2e-7)
- DAVID:KEGG Top1 “Metabolic pathways” (p=3.5e-5)
- Metascape:KEGG Top1 “PI3K-Akt signaling pathway” (p=8.9e-8) 差异源于DAVID未更新KEGG,Metascape加权了PI3K通路的高IC基因。结论:clusterProfiler结果最可靠,因其严格遵循GO/KEGG官方更新。
5.5 问题:如何向非生物信息背景的同事(如临床医生)解释GO/KEGG结果
核心技巧:抛弃术语,用临床语言重构。不要说“GO:0007059 mitotic cell cycle arrest”,而说:“药物让癌细胞停在分裂的‘卡点’上,就像踩住汽车油门不让它前进”。不要说“KEGG hsa04151 PI3K-Akt pathway富集”,而说:“药物切断了癌细胞的‘生存信号’,这条信号像一条高速公路,药物在入口(PI3K)和收费站(Akt)都设置了路障”。我制作了一套“临床转化卡片”:
- 卡片正面:KEGG通路图局部截图,高亮药物靶点和关键下游分子;
- 卡片背面:三句话解释:① 这条通路在癌症中起什么作用?(如“它是癌细胞逃避死亡的主要通道”);② 药物如何干预它?(如“药物堵住了通道入口,让死亡信号畅通无阻”);③ 这对应什么临床现象?(如“这解释了为什么用药后肿瘤缩小,但也可能引起高血糖——因为同一条通路也调控血糖”)。 这套卡片在某药企向FDA提交的机制研究报告中被采纳,评审专家反馈:“第一次看懂了你们的生物信息分析”。
我在某跨平台药物重定位项目中,用这套方法将一个老药的新适应症假说从“可能有效”推进到“有明确分子机制支撑”,最终进入II期临床。过程中最深的体会是:GO和KEGG不是黑箱输出,而是你和药物对话的语言。每次看到“oxidoreductase activity”富集,我想到的不是p值,而是药物分子上那个暴露的巯基;每次看到“p53 signaling pathway”点亮,我眼前浮现的是细胞核里那段被激活的DNA序列。分析的终点,永远是那个可触摸、可测量、可验证的生物学真相。