跳转至

660 微生物代谢建模GSMM

一句话概述:基因组规模代谢模型(GSMM)将基因组信息转化为可计算的代谢网络,用FBA等方法预测微生物的代谢能力和种间互作。

核心知识点速查表

知识点关键内容
GSMM定义将基因组所有代谢基因→酶→反应→代谢网络
FBA流量平衡分析,预测稳态代谢通量
自动化工具CarveMe(快速)、gapseq(全面)、Gempipe(2025混合)
群落建模MICOM/COMETS结合多个GSMM模拟群落代谢
大规模资源AGORA2(7302个人类微生物模型)
gap-filling补全不完整模型的关键步骤

一、什么是GSMM?(白话解释)

打个比方:GSMM就像给细菌画了一张完整的"代谢地图"——从基因组出发,找到所有能编码酶的基因,然后把这些酶催化的所有代谢反应串联起来,形成一个巨大的网络。有了这张地图,就可以用数学方法模拟细菌"吃什么、产什么"。

二、GSMM构建流程

2.1 自动化构建工具对比

工具速度数据库特点2024-2025状态
CarveMe~10分钟/模型BiGG自上而下,速度快活跃维护
gapseq1-2小时/模型SEED+多源全面准确,gap-filling优秀活跃维护
ModelSEED/KBase~10分钟SEED网页版易用活跃维护
Gempipe(2025新)中等混合泛基因组/多菌株建模新发布

2.2 用CarveMe构建模型

# CarveMe安装
conda create -n carveme python=3.9  # 创建conda环境
conda activate carveme  # 激活环境
pip install carveme  # 安装CarveMe

# 从蛋白质序列构建GSMM
carve genome.faa \          # 输入:蛋白质fasta文件
  -o model.xml \            # 输出:SBML格式的代谢模型
  --solver cplex \          # 求解器(也可用glpk)
  -g M9 \                   # Gap-filling用的培养基(M9)
  --init M9                 # 初始化培养基

# 从基因组直接构建(自动调用Prodigal预测基因)
carve genome.fna \          # 输入:核酸fasta文件
  -o model.xml \            # 输出模型
  --dna                     # 表示输入是DNA序列

2.3 用gapseq构建模型

# gapseq安装
git clone https://github.com/jotech/gapseq.git  # 克隆仓库
cd gapseq  # 进入目录
bash src/update_sequences.sh  # 下载参考序列

# 1. 预测代谢通路
./gapseq find \
  -p all \                  # 预测所有代谢通路
  -b 200 \                  # BLAST比特分数阈值
  genome.fna                # 输入基因组

# 2. 预测转运蛋白
./gapseq find-transport \
  genome.fna                # 预测膜转运蛋白

# 3. 构建草稿模型
./gapseq draft \
  -r genome-all-Reactions.tbl \  # 反应预测结果
  -t genome-Transporter.tbl \   # 转运蛋白预测
  -c genome.fna \               # 基因组序列
  -p genome-all-Pathways.tbl    # 通路预测结果

# 4. Gap-filling(补全模型)
./gapseq fill \
  -m genome-draft.RDS \     # 草稿模型
  -n gut_medium.csv \       # 培养基组成
  -c genome-rxnWeights.RDS \ # 反应权重
  -g genome-rxnXgenes.RDS   # 基因-反应对应

三、FBA(流量平衡分析)

# 使用COBRApy进行FBA分析
import cobra  # 基于约束的代谢建模

# 读取模型
model = cobra.io.read_sbml_model("model.xml")  # 读取SBML格式模型
print(f"模型包含: {len(model.reactions)} 反应, "
      f"{len(model.metabolites)} 代谢物, "
      f"{len(model.genes)} 基因")

# 1. 基本FBA:最大化生物量
solution = model.optimize()  # 求解FBA
print(f"最大生长速率: {solution.objective_value:.4f} h⁻¹")  # 目标函数值
print(f"求解状态: {solution.status}")  # optimal=成功

# 2. 查看关键反应的通量
import pandas as pd
fluxes = solution.fluxes  # 所有反应的通量
# 找出活跃反应(通量>0)
active = fluxes[fluxes.abs() > 1e-6]  # 过滤掉零通量反应
print(f"活跃反应数: {len(active)}/{len(fluxes)}")

# 3. 模拟不同培养基条件
with model:  # 上下文管理器,不修改原模型
    # 关闭葡萄糖摄入,打开乳糖
    model.reactions.get_by_id("EX_glc__D_e").lower_bound = 0  # 禁止葡萄糖摄入
    model.reactions.get_by_id("EX_lcts_e").lower_bound = -10  # 允许乳糖摄入
    sol_lactose = model.optimize()  # 用乳糖的生长速率
    print(f"乳糖培养基生长速率: {sol_lactose.objective_value:.4f}")

# 4. 基因敲除分析
with model:
    gene = model.genes.get_by_id("gene_001")  # 获取目标基因
    gene.knock_out()  # 基因敲除
    sol_ko = model.optimize()  # 敲除后的生长
    print(f"敲除后生长速率: {sol_ko.objective_value:.4f}")

四、群落代谢建模

4.1 MICOM

# MICOM群落代谢建模
# pip install micom
from micom import Community  # MICOM群落类
from micom.workflows import build, grow  # 工作流函数
import pandas as pd

# 1. 准备群落组成数据
taxonomy = pd.DataFrame({
    "id": ["bac1", "bac2", "bac3"],  # 物种ID
    "genus": ["Bacteroides", "Faecalibacterium", "Bifidobacterium"],  # 属名
    "abundance": [0.3, 0.25, 0.15],  # 相对丰度
    "file": ["models/bac1.xml", "models/bac2.xml", "models/bac3.xml"]  # 模型路径
})

# 2. 构建群落模型
com = Community(taxonomy,
                id="gut_community",  # 群落ID
                progress=True)  # 显示进度

# 3. 合作权衡FBA(群落FBA)
sol = com.cooperative_tradeoff(fraction=0.5)  # fraction=个体目标的最低比例
print(f"群落生长速率: {sol.growth_rate:.4f}")  # 群落总生长
print(sol.members)  # 各成员的生长状态

# 4. 代谢物交换分析
exchanges = sol.exchanges  # 物种间代谢物交换
# 找出交叉喂养(cross-feeding)
cross_feeding = exchanges[exchanges["flux"].abs() > 1e-6]  # 有显著交换的代谢物
print("代谢物交换:")
print(cross_feeding[["metabolite", "taxon", "flux"]].head(20))

4.2 COMETS空间建模

# COMETS空间代谢建模
# pip install cometspy
import cometspy as c  # COMETS Python接口

# 1. 创建布局(空间网格)
layout = c.layout()  # 初始化空间布局
layout.grid = [10, 10]  # 10x10网格

# 2. 添加物种模型
model1 = c.model(cobra.io.read_sbml_model("ecoli.xml"))  # 大肠杆菌
model2 = c.model(cobra.io.read_sbml_model("bsubtilis.xml"))  # 枯草杆菌
layout.add_model(model1)  # 添加到布局
layout.add_model(model2)

# 3. 设置培养基
layout.set_specific_metabolite("glc__D_e", 0.01)  # 葡萄糖浓度
layout.set_specific_metabolite("o2_e", 0.001)  # 氧气浓度

# 4. 模拟参数
params = c.params()  # 模拟参数
params.set_param("maxCycles", 100)  # 最大模拟步数
params.set_param("timeStep", 0.1)  # 时间步长(小时)

# 5. 运行模拟
experiment = c.comets(layout, params)  # 创建COMETS实验
experiment.run()  # 运行模拟
biomass = experiment.total_biomass  # 获取生物量时间序列
print(biomass.head())

五、从MAG到GSMM

# 从宏基因组MAG构建GSMM的流程
# 1. MAG质量评估
checkm lineage_wf mag_folder/ checkm_output/ -x fa -t 8  # CheckM质量评估

# 2. 基因预测
prodigal -i mag.fa -a mag_proteins.faa -o mag_genes.gff -p meta  # Prodigal基因预测

# 3. 用CarveMe构建模型
carve mag_proteins.faa -o mag_model.xml -g M9  # 从MAG蛋白构建GSMM

# 4. 模型质量检查(MEMOTE)
memote run --filename mag_model_report.html mag_model.xml  # MEMOTE评分

常见报错与解决

报错原因解决方案
FBA求解infeasible模型有不可行约束检查培养基设置,确保必需营养物可用
Gap-filling添加了太多反应基因组不完整(MAG)用2024年iScience的深度学习方法补全
MICOM群落FBA不收敛物种太多/通量冲突减少物种数或调整cooperative_tradeoff参数
模型无法在给定培养基生长培养基缺少必需营养用gapseq的-n参数指定正确的培养基文件
CarveMe报"no CPLEX license"缺商业求解器改用免费的glpk:--solver glpk

速查表

# GSMM分析流程
基因组/MAG → 基因预测(Prodigal) → 功能注释
  → 模型构建(CarveMe/gapseq) → Gap-filling
  → 质量评估(MEMOTE) → FBA分析(COBRApy)
  → 群落建模(MICOM/COMETS)

# 工具选择
速度优先 → CarveMe
准确性优先 → gapseq
多菌株分析 → Gempipe (2025)
群落代谢 → MICOM (Python) / COMETS (空间模拟)
模型质量评估 → MEMOTE

# 大规模模型资源
AGORA2: 7,302个人类微生物GSMM (Nature Biotechnology 2022)
2025年Cell Systems: 247,092个多大洲微生物GSMM

面试高频问题

Q1:什么是FBA?它的核心假设是什么? A:FBA(Flux Balance Analysis)通过线性规划在代谢网络的稳态约束下最大化目标函数(通常是生物量)来预测代谢通量。核心假设:(1) 稳态(代谢物浓度不变);(2) 优化某个目标(如最大化生长)。

Q2:CarveMe和gapseq有什么区别? A:CarveMe是自上而下方法(从通用模型剪裁),快速(~10min)但可能不够精确;gapseq是自下而上方法(从头预测通路),更全面(1-2h)但更慢。2024年npj Systems Biology研究建议用共识模型(多工具整合)减少不确定性。

Q3:什么是gap-filling?为什么需要它? A:gap-filling是补全代谢模型中缺失反应的过程。因为基因组注释不完整(尤其MAG),有些已知存在的代谢能力在模型中缺少相应反应,需要用算法推断并添加这些缺失的反应,使模型能够模拟真实的代谢行为。

Q4:如何用GSMM分析群落代谢互作? A:(1) 为每个物种构建GSMM;(2) 用MICOM/COMETS组合成群落模型;(3) cooperative tradeoff FBA求解群落最优;(4) 分析代谢物交换找出交叉喂养关系。2025年的Virtual Colon还能模拟肠道的空间结构和粘液层。