ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基因组规模代谢网络构建指南:从数据库选型到FBA验证

基因组规模代谢网络构建指南:从数据库选型到FBA验证 先别急着打开任何数据库我先花两分钟让你搞清楚一件事基因组规模代谢网络GSMM到底是个什么东西以及为什么说从数据库选择到模型构建是整套流程里最容易被低估的两道坎。很多刚接触这个方向的人手里拿到一个细菌的基因组序列第一反应是跑个基因注释看看有哪些功能基因。这没错但注释只是告诉你这个细胞里有什么零件。而GSMM要做的是更高一层的事——把这些零件按照生化反应关系接成一张网让你能模拟零件之间怎么协同工作甚至回答敲掉某个基因细胞还能不能活、补上哪个反应这个菌就能多产某一种目标化合物这类问题。这篇内容不打算给你堆术语而是按照我自己做过的实际项目把整条链路拆开讲GSMM的底层逻辑、公共数据库的选型思路、模型构建的标准流程、构建完成后的验证方法以及我踩过的那些坑。适合三类人看刚入门想做代谢模型的研究生、公司里想用模型辅助菌株改造的研发人员还有对系统生物学感兴趣、想搞清楚怎么从序列算到表型的工程师。1. 先搞懂GSMM的本质一张把基因型连到表型的代谢网1.1 一个细胞工厂的比喻把细胞想象成一座化工厂。厂房里有各种管道代谢反应管道之间连接着储罐代谢物每个管道上装着阀门酶阀门由控制室里的开关基因控制。基因组注释相当于清点这座工厂里有多少个阀门、多少个储罐而GSMM做的是把整个管道系统重新绘制出来并且标清楚哪个开关控制哪个阀门、哪个阀门产什么、产物流向下游哪个储罐。这座虚拟工厂画好之后就能做仿真了把某个开关关掉基因敲除看哪些产物会断供基因必需性预测往系统里多开放一条管道异源表达一个反应看产物能不能绕开原来的瓶颈。这就是模型驱动的代谢工程和传统的盲试突变筛选相比效率完全不同。1.2 GSMM的数学内核不是玄学GSMM在数学上是一个约束优化问题。核心数据结构是三个集合代谢物集合、反应集合、基因-蛋白-反应GPR关系。把所有反应放进矩阵行是代谢物列是反应细胞内外物质的交换反应放在边界上就得到了一个化学计量矩阵S。稳态假设下细胞内所有代谢物的净变化为零S · v 0其中 v 是每个反应的流量。再加上每个反应的通量上下限约束v_lb ≤ v ≤ v_ub以及一个目标函数比如最大化生物量或最大化目标产物就构成了一个标准的线性规划问题。用通量平衡分析FBA一求解就能得到一个通量分布——也就是哪条管道走多少流量。这个概念不难难的是矩阵 S 里那几百上千个反应系数不是凭空写出来的而是要有一个可靠来源。这个来源就是各种数据库。1.3 为什么说注释 ≠ 模型我见过不少初学者拿着KEGG注释结果说我已经有代谢网络了。严格讲那只是把基因和KO号KEGG Orthology对应起来距离一个能算通量的GSMM还差得远。模型必须满足三个条件化学计量平衡碳、氮、磷、氧等元素在反应式两边必须守恒、方向性正确热力学上可逆/不可逆要合理、GPR关系完整每个反应至少能对应到基因组上的一个基因。所以GSMM构建的起点是数据的组装与对齐这也是下一章数据库选型为什么如此关键的根因。2. 数据库选型五种公共资源别乱抓一把数据库是GSMM的地基。很多人栽跟头不是栽在建模工具上而是栽在从哪个数据库取反应、取基因-蛋白-反应关系、取生物量组分这三个决定上。不同的数据库有不同的覆盖范围和底层假设选错了后面的模型质量很难补救。2.1 BiGG Models教科书级的模式生物乐高积木BiGGBiochemistry Genetics and Genomic是系统生物学里最老牌、最标准化的数据库之一。它的核心特点是代谢物和反应命名统一使用了标准化的BiGG ID像M_pyr_c胞质内丙酮酸、R_PFK磷酸果糖激酶这种命名方式在几乎所有COBRA工具里都能直接识别。它收录了大肠杆菌、枯草芽孢杆菌、人、酵母等一批模式生物的优质模型而且维护团队对反应的元素平衡查得很严。如果你做的是模式生物最省事的路径不是从零构建而是直接基于BiGG里已有的模型做上下游裁剪。它的局限性也很明显非模式物种的覆盖不足很多环境中分离的新菌根本不在里面。2.2 KEGG覆盖面广但拿来即用要当心KEGGKyoto Encyclopedia of Genes and Genomes在生物信息领域无人不知。它通过KO号把基因映射到代谢通路天然适合给基因组注释这件事。但对GSMM构建来说KEGG有一个很麻烦的地方通路pathway是示意性的不是化学计量上严格平衡的反应集合同一个KO号在不同物种里可能对应细节不一致的反应而且KEGG的化合物ID与BiGG ID需要额外转换比如通过MetaNetX来做映射。我的经验是KEGG适合在建模初期做通路盘点快速看某个物种具备哪些通路模块但不要直接拿KEGG的pathway文件当反应库灌进模型否则后面做元素平衡检查时会痛不欲生。2.3 MetaCyc / BioCyc反应机制细节丰富适合精细化补全MetaCyc是一个人工注释的代谢反应数据库特点是反应学细节好——辅因子、逆反应方向、 EC 号注释都相当完整。BioCyc则包含大量物种的 Pathway/Genome DatabasesPGDBs。对GSMM来说MetaCyc最大的价值在于手工修补反应机制当你发现模型里某个反应的化学计量不对或者缺少某个辅因子时MetaCyc是查反应细节最靠谱的资料。代价是它的数据格式比较重而且使用许可有学术/商业之分团队做商业项目时要专门确认授权。2.4 ModelSEED / RAST自动化管线的自动挡ModelSEED是RAST注释系统和PATRIC平台背后的一套自动化建模框架。它的思路是输入基因组序列或注释结果自动生成一个seed反应库对应的GSMM。Seed反应库把KEGG、MetaCyc等多源数据做了整合和ID统一这一点的确方便。但自动挡的代价是生成的模型里有很多gap和混乱的GPR关系特别是对一些研究较少的菌会出现反应在模型里但基因证据很弱的情况。我通常把它当作快速原型工具用来在几天内拿到一个初版模型再去做人工修正很少直接拿它的输出当最终成品。2.5 CarveMe、gapseq和BactFuse新一代自动建模工具近几年的趋势是直接用工具从基因组序列构建模型而不必自己苦哈哈地逐条拼接反应库。我常用的是CarveMe它基于一个完整反应库用biclinical programming双线性优化的思路根据输入的基因组蛋白序列找到最精简且能支持所有可检测生长表型的反应子集。命令非常简洁# 安装conda是最省心的方式 conda create -n carveme -c bioconda carve # 运行输入蛋白fasta输出SBML模型 carve --input proteins.faa --output model.xml --media M9还有gapseq它利用一个内置的pan反应库和BLAST结果来预测代谢能力对细菌表现不错而且能同时预测生长培养基。这类工具的缺点是模型对输入注释质量极其敏感经常需要后面的质控步骤兜底。2.6 一张表总结选择策略需求场景首选方案备选方案备注模式生物大肠杆菌/酵母等BiGG已有模型在此基础做gap filling最省力准确率最高非模式细菌环境分离株CarveMe或gapseq自动建模ModelSEED交叉验证必须人工质控真核生物真菌/植物BiGG酵母模型改造 MetaCyc补全CarveMe注意细胞内区室化区室化问题是真核建模的难点只想快速验证通路存在性KEGG通路图 模型映射不用建GSMM别把通路注释当成GSMM数据库这块我多说一句没有哪个数据库是万能的。成熟的建模团队通常是多库交叉、手工验证。我自己的习惯是核心反应库以BiGG为主干反应细节缺失时去MetaCyc查自动化初版用CarveMe跑最后用KEGG和模型SEED的结果做交叉验证。四管齐下才能得到一个经得起推敲的模型。3. 模型构建完整流水线从基因组序列到可模拟的GSMM这一章是整套流程的实操核心。我以拿到一个细菌的基因组序列最终跑通FBA模拟为场景把步骤拆开讲。假设你已经组装好了基因组文件是genome.fasta。3.1 第一步基因注释要选对工具这直接决定模型天花板模型里每个反应都得对应到基因而基因列表来自注释。注释工具的选择非常关键。Prokka是老牌原核注释工具速度快、适合细菌基因组但它的数据库更新相对慢对新发现的功能基因覆盖有限。eggNOG-mapper是我更推荐的工具。它基于eggNOG数据库做直系同源注释速度快而且直接输出KEGG KO号、EC号、GO等层次信息这些信息后续可以和代谢反应直接关联。RASTtk适合走全自动流程的人它内置了ModelSEED对接注释完直接能生成一个粗模型适合快速预览。实操上我通常用Prokka先跑一版结构注释再用eggNOG-mapper做功能注释这样既能拿到高质量的CDS坐标又能拿到充足的EC号和KO号。命令大概是这样# 1. Prokka 结构注释 prokka genome.fasta --outdir prokka_out --prefix genome # 2. eggNOG-mapper 功能注释输入蛋白序列 emapper.py -i prokka_out/genome.faa \ --cpu 8 \ --output eggnog_out \ --output_dir eggnog_dir \ -m diamond注释结果里你最需要关注的是EC号列表和KO号列表。绝大多数自动化建模工具都是靠EC号/KO号去关联反应库的。注释的完整性直接决定了模型里能看到多少反应这是天花板。3.2 第二步用CarveMe或gapseq生成骨架模型拿到注释蛋白序列后启动自动建模工具。用CarveMe的话输入是蛋白fasta# 生成普通M9培养基下的最小模型 carve --input prokka_out/genome.faa \ --output GSM_model.xml \ --media M9 \ --gapfill default # 也可以先用 --dna 参数直接从核酸序列开始工具会先做六框翻译这一步会得到一个SBML格式的模型文件。SBML是系统生物学标准交换格式后续所有COBRA工具都能用。如果你用的是gapseq流程稍微不同# gapseq需要先做全基因组的blast gapseq doall -p genome.faa -t genome.gff -o gapseq_out -b 150gapseq的好处是它会自动预测必需营养物质营养缺陷型、生物量反应组成和转运反应对非模式菌特别实用。CarveMe虽然也能生成生物量反应但它的生物量配方是从参考物种来的对某些特殊菌比如依赖特殊脂质的菌不够贴合。这一步输出的模型往往很糙反应数偏少因为CarveMe刻意追求最小化、GPR关系偏简化、甚至有些反应没有基因关联。别急着拿去算后面几步才决定质量。3.3 第三步人工检查与修正GPR关系这是模型构建里最耗时、也最体现功力的一步。GPRGene-Protein-Reaction关系描述的是一个反应由哪些基因的产物酶催化。它不止是这个反应有没有基因还区分AND多亚基蛋白复合体所有亚基都要存在和OR同工酶任一存在即可。自动建模工具生成的GPR通常简化得厉害。比如某些反应明明需要两个亚基的蛋白质复合体工具只给了其中一个基因或者某个酶在基因组里有多个同源基因工具只认了其中一个。这些问题在后续做基因必需性预测和代谢工程靶点预测时会直接放大。修正GPR需要回到注释结果和模式物种的参考GPR。BiGG里已有的大肠杆菌模型是很好的参考模板KEGG的module和ko条目也能辅助判断酶亚基组成。这一步的理想产出是模型中每个反应都有一条合理的、可回溯到基因组注释的GPR记录而不是一个空泛的有/无。3.4 第四步生物量反应——模型的生命线生物量反应Biomass Reaction是FBA里最核心的目标函数。它把各种生物大分子前体氨基酸、核苷酸、脂质、辅因子等按一定比例组装成一单位的新细胞物质。没有这个反应FBA根本不知道细胞在长什么。常见的两种获取方式借用参考物种配方BiGG里大肠杆菌iML1515的生物量反应直接搬过来用适合亲缘关系较近的物种。基于实测或预测组分gapseq可以根据基因组预测脂肪酸合成、氨基酸合成等路径推断出大致的生物量组成如果你有实验数据膜脂组成、蛋白含量、RNA/DNA比例也可以自定义反应式。我得提醒一句生物量反应是模型里影响最大的一个参数。同样条件下把生物量反应中某个脂质前体的系数调高一些模型预测的生长速率和基因必需性结果都会变。所以如果你是给一个新物种建模最好去查文献里的实测生物量组分而不是永远默认用大肠杆菌的配方。3.5 第五步gap filling——补上断头路做完上面几步模型里通常还有不少死胡同某些中间代谢物只能被合成、不能被消耗或者某个必需前体没法合成。这些补不上路的地方就是gap。gap filling的任务是把缺失的反应补齐让模型能在给定培养基上长出预测的生物量。自动化工具CarveMe的--gapfillgapseq的gapfill模块都是最小补齐策略——在反应库中挑尽量少的反应加进模型使得模型在指定培养基上能产生生物量。但自动补齐有一个大问题它补进来的反应可能没有基因证据。所以在自动gap filling之后我会做一轮证据对齐把工具新加进来的每个反应都拿回KEGG和NCBI BLAST里查一遍看基因组里到底有没有对应基因。如果某个补进来的反应在基因组上完全找不到同源基因我会在模型里保留它但在描述文件里标记为gap-filled/基因证据缺失后续模拟时就知道哪些结论是脆弱的。这一步推荐用COBRApy来做可以直观地查看和修改模型import cobra from cobra.io import read_sbml_model, write_sbml_model # 读取模型 model read_sbml_model(GSM_model.xml) # 查看模型基本信息 print(反应数:, len(model.reactions)) print(代谢物数:, len(model.metabolites)) print(基因数:, len(model.genes)) # 找到并展示某个gap-filled反应 pfk model.reactions.get_by_id(R_PFK) print(PFK反应方程:, pfk.reaction) print(GPR:, pfk.gene_reaction_rule) # 把某个反应标记为无基因证据直接把GPR置空 pfk.gene_reaction_rule 3.6 第六步设定培养基和环境约束跑第一次FBA骨架模型修完终于可以跑正事了——在给定生长条件下做FBA模拟。这一步定义实验条件以M9葡萄糖培养基为例需要让葡萄糖交换反应的下限为允许吸收比如 -10 mmol/gDW/h氧交换反应的下限为 -20并且限制其他不存在的底物交换反应的通量上限为0即不开放这些底物的吸收。COBRApy代码非常简单import cobra # 读取修正后的模型 model cobra.io.read_sbml_model(GSM_model_fixed.xml) # 查看所有的交换反应找到目标底物 exchanges [rxn for rxn in model.reactions if rxn.boundary] for ex in exchanges: print(ex.id, ex.name, ex.lower_bound, ex.upper_bound) # 设置葡萄糖吸收负值代表吸收方向 glc model.reactions.get_by_id(EX_glc__D_e) glc.lower_bound -10 # -10 mmol/gDW/h # 设置氧气吸收 o2 model.reactions.get_by_id(EX_o2_e) o2.lower_bound -20 # 把其他碳源交换反应都限制为0强制只有葡萄糖作为碳源 for ex in exchanges: # 这里按需排除氨基酸、有机酸等代谢物 if glc not in ex.id: ex.lower_bound 0 # 目标函数默认是生物量反应直接跑FBA solution model.optimize() print(预测最大生长速率:, solution.objective_value, /h) # 输出葡萄糖的消耗通量和主要副产物通量 print(葡萄糖吸收通量:, model.reactions.get_by_id(EX_glc__D_e).flux) print(CO2分泌通量:, model.reactions.get_by_id(EX_co2_e).flux)第一次能跑通FBA恭喜你你已经拥有了一个能用的GSMM。但我要给你泼盆冷水能跑通不代表模型是对的。下一章的验证比构建更重要。4. 构建完先别高兴模型验证与调优的三板斧模型的准确不是一个绝对概念而是相对于你关注的生物学问题来说的。一个能准确预测大肠杆菌生长速率的模型放在一个嗜冷菌上可能就是废纸。所以我建议按以下三个优先级做验证。4.1 第一板斧单碳源生长表型验证这是最基础、也是最容易做的验证。拿你模型的菌种文献或者自己实验里的一组碳源利用数据比如这个菌能在葡萄糖、木糖上长不能在这种柠檬酸上长然后在模型里逐一模拟把目标碳源的交换反应下限设为 -5允许吸收把其他碳源全部禁用交换通量上下限设为0跑FBA看预测的生长速率是否为正值如果模型预测能长而实验是不能长先检查是不是缺了某个毒性代谢物的积累机制如果模型预测不能长而实验能长通常需要补充对应碳源进入中心代谢的转运或降解反应gap filling环节漏掉了。这个验证能暴露大量问题。我做过一个极端案例有个菌可以用纤维素二糖生长但模型里缺少纤维二糖的转运体导致预测不能长。把转运反应补上后模型立刻就能复现实验。这种问题越早发现越好省得后头分析结果的时候一头雾水。4.2 第二板斧基因必需性比对基因必需性gene essentiality预测是GSMM最经典的应用之一。做法是逐一把模型里的每个基因敲掉将对应反应的GPR设为不可用重新跑FBA看生物量是否还能产生。把预测的必需基因列表和实验数据如Tn-seq转座子测序结果、单基因敲除文库比对算一个准确率。COBRApy里可以用single_gene_deletion函数一键完成# 单基因敲除模拟返回每个基因敲除后的生长速率 from cobra.flux_analysis import single_gene_deletion deletion_results single_gene_deletion(model) for gene_id, growth in deletion_results.items(): if growth 1e-6: print(f{gene_id}: 必需基因)如果必需基因的预测准确率低于70%大概率是模型里有两个问题一是存在替代途径parallel pathways没有妥善处理某个反应敲掉后模型还可以走另一条路径生成产物二是GPR关系过于保守或者生物量反应中某个组分可以被替代合成。调优方向是给这些替代反应补上更准确的GPR证据或者修正生物量反应的组成。4.3 第三板斧产物流量对比和通量分布合理性如果你的目标是代谢工程这一步就是决定性验证。做实验拿到菌株的产物产量、底物消耗速率、副产物分泌速率和模型的通量分布去对比。FBA给出的只是所有可行解里的一个最优解而真实细胞不一定真正运行在最优状态实验室驯化菌株通常接近最优但有时会有碳溢流、Crabtree效应这类次优现象。这一阶段要做的不是骂模型不准而是弄清楚模型与实验之间偏差的系统性来源。如果模型预测的CO2产量系统性偏低检查碳原子是否守恒——很可能有一些反应缺少副产物或部分反应方向设置错误。4.4 调优不是盲目加反应要有最小改动原则很多人在模型报错或者预测不对时第一反应是多加几个反应。这是个巨大的误区。每加一个反应模型的解空间就会扩大预测的确定性就会下降。好的调优逻辑是先确定问题反应用通量变异分析看看哪些反应在最优解附近能灵活变化再确认基因证据BLAST、转录组、蛋白组有没有支持最后只对有证据的反应做修改并且在模型文件里留下修改记录记住模型不是一个越全越好的东西而是越能复现实验、越有解释力越好的精简系统。一个500反应但每一个都有证据的模型远好过一个2000反应但靠猜测塞满的模型。5. 真实项目里的高频坑这些弯路我已经替你走过了5.1 坑一基因ID在数据库里查无此人从Prokka注释出的基因编号如PROKKA_00001拿去KEGG和NCBI BLAST经常查不到东西不是没同源基因而是编号体系不通用。正确做法用eggNOG-mapper或InterProScan做功能注释后记录下每一条CDS对应的KO号和EC号再用这些功能ID去关联反应库。让模型里的每个反应都能追溯到一个功能证据这是建模可复现的生命线。5.2 坑二代谢物命名不统一导致模型张冠李戴BiGG里M_pyr_c是胞质丙酮酸KEGG里是C00022MetaCyc里缩写又不一样。自动建模工具帮你做了映射但映射本身可能出错。特别是胞内和胞外_c和_e前缀很容易在交换反应里搞混导致模型认为某个代谢物在胞外合成而不是被细胞吸收。**经验做法**每次从外部数据库导入反应都检查一遍代谢物ID在模型里是不是已经存在。用COBRApy对比ID、名称和化学式三个都对得上才放心。5.3 坑三gap filling暴力补丁把模型补虚了自动工具的最小补齐策略很可能补进一些孤儿反应——这些反应虽然能让模型在计算机里长出生物量但基因组上根本找不到对应基因。用这样的模型做预测相当于在一栋地基不稳的楼上继续砌墙。必须给每个gap-filled反应做一次BLAST回查把无基因证据的反应单独标记能删就删不能删就在结论里明确标注此结论依赖无基因证据反应。5.4 坑四忽略区室化把真核模型做成了细菌真核生物的代谢反应发生在不同区室细胞质、线粒体、过氧化物酶体、内质网等不同区室之间的代谢物池不能混用。如果用细菌那套单室思路去做真菌模型会出现类似线粒体里的乙酰CoA和细胞质里的乙酰CoA是同一个池子的离谱错误。现代COBRA工具支持多个compartment建模时一定要为每个区室单独创建代谢物副本并通过转运反应连接。基础代谢模型如酵母的iMM904就是很好的参考对象。5.5 坑五FBA跑出来的通量分布并不是唯一答案线性规划求出来的只是一个最优通量解。实际代谢网络里同等生长速率下可能有很多种通量分配方式。所以在做某个反应通量高/低的结论之前务必用**通量变异分析FVA**看看每个反应的通量范围from cobra.flux_analysis import flux_variability_analysis fva_result flux_variability_analysis(model, fraction_of_optimum0.99) print(fva_result)如果某个反应的最优通量范围是 0 到 1000那就说明这个反应的通量值在这个模型里是自由变量别拿它写结论。FVA能救你的论文一命。6. GSMM能干什么从代谢工程到群落和单细胞模型建出来不是用来摆着的。搞懂GSMM之后你手里等于多了一个可编程的细胞仿真器应用方向非常广。代谢工程靶点预测是最直接的用法。你想让大肠杆菌高产某种化合物传统做法是在十几个候选基因里盲试用模型的话先跑一遍optknock或OptGene这类算法得到必须敲除哪些基因、过表达哪些基因的预测方案再上实验验证。我做过的一个氨基酸生产菌株改造项目模型预测的前三个靶点里有两个和文献报道的经典改造点一致省了至少两个月的前期筛选时间。基因必需性筛选与药物靶点发现是模型在临床上最有价值的应用。把病原菌的GSMM跑一遍全基因必需性模拟找到那些人类没有、病原菌有的必需反应就是潜在的抗菌药靶点。这类分析在结核分枝杆菌、肺炎克雷伯菌等病原菌上已经有很多成功案例。群落代谢建模microbial community modeling则把单物种模型升级成多物种模型。用SteadyCom这类方法把多个物种的GSMM放到同一个共享培养基上跑FBA可以模拟菌群中谁吃谁产生的代谢物、谁和谁竞争资源。这在肠道菌群和生物被膜研究中特别受欢迎也是我目前最看好的方向之一。酶约束模型GECKO等解决的是FBA里反应通量上限从哪来的问题——传统模型靠经验值设定通量上下限GECKO则引入蛋白质组数据把每个反应的通量上限和对应酶的kcat值关联起来让模型更贴近真实细胞的蛋白丰度约束。如果后续有条件做蛋白质组学这个方向值得深入研究。动态模型dFBA则把GSMM和时间变化结合起来模拟底物消耗、产物积累、菌体增长的全过程。虽然计算量比普通FBA大不少但在发酵过程优化里有很强的落地价值。最后说点实际操作层面的体会。GSMM这套东西入门门槛并不高——工具链已经相当成熟CarveMe COBRApy BiGG三件套快的话两三天就有一条完整的建模流水线。真正的分水岭在细节考究上做不做多库交叉验证、GPR证据链完不完整、gap filling有没有留痕、生物量反应贴不贴合物种实际。这些功夫短期看不出差别等模型真正被拿去指导实验或者写进论文里才见真章。我给新手的建议也很简单先别急着挑战非模式菌拿一株大肠杆菌或枯草芽孢杆菌把全流程跑通然后换一个数据库重建一次对比差异最后再上自己的目标物种。把流程跑出肌肉记忆之后那些真正有价值的研究问题——这个菌为什么长这样哪个基因是软肋这种菌和那种菌怎么合作——自然就有答案了。
返回列表