118

ColabFold:低门槛蛋白结构预测工作流

ColabFold 用 MMseqs2 把 MSA 搜索加速数十倍,是最实用的结构预测入口。这篇给出完整的使用与调参指南。

ColabFold(Mirdita 等,Nature Methods 2022)解决了 AlphaFold2 最大的实用障碍:MSA 搜索太慢、数据库太大。它用 MMseqs2 替代 HHblits/Jackhmmer,把搜索时间从数小时压缩到数分钟,且通过远程服务器提供,用户无需下载任何数据库。

核心改进

官方 AlphaFold2 ColabFold
MSA 搜索工具 Jackhmmer + HHblits MMseqs2
搜索耗时 数十分钟~数小时 数分钟
数据库 需本地下载 > 2 TB 远程服务器,无需下载
运行环境 需自建 GPU 环境 Google Colab 免费 GPU
易用性 命令行 + 配置 网页点击即用
模型 AF2 AF2、AF2-multimer

「让原本需要专业运维支持的工具变成人人可用」是 ColabFold 最大的贡献——它的实际影响可能超过任何算法改进。

三种使用方式

# 方式一:Google Colab(最简单,适合零星使用)
#   打开 https://github.com/sokrypton/ColabFold
#   点 AlphaFold2.ipynb 的 Colab 徽章
#   粘贴序列 → 运行 → 下载结果
#   免费 GPU 有时长限制,长序列可能超时

# 方式二:本地安装(适合批量与敏感数据)
pip install "colabfold[alphafold]"
# 或使用官方安装脚本 install_colabbatch_linux.sh

colabfold_batch input.fasta output_dir/

# 常用参数:
colabfold_batch input.fasta output_dir/ \
  --num-recycle 6 \
  --num-models 5 \
  --num-seeds 3 \
  --amber \
  --templates \
  --model-type auto

# 方式三:本地 MMseqs2 数据库(完全离线)
#   适合有保密要求的序列
#   需要下载 ColabFoldDB(约 1 TB,仍远小于官方数据库)
colabfold_search input.fasta /path/to/db/ msas/
colabfold_batch msas/ output_dir/

关键参数的作用

# --num-recycle(默认 3)
#   循环回收次数,把预测结果再输入网络精化
#   增加到 6~12 通常能改善难预测的序列
#   代价:时间线性增长
#   → 【对低置信度的预测,先试试加大这个参数】

# --num-models(默认 5)
#   AF2 有 5 个训练好的模型,各自预测
#   → 保留全部可以看预测的一致性
#   → 5 个模型结果差异大 = 该预测不可靠

# --num-seeds(默认 1)
#   每个模型用不同随机种子多次预测
#   → 采样构象多样性
#   → 对可能有多构象的蛋白很有用

# --amber
#   用 Amber 力场做结构弛豫
#   修正键长键角与侧链冲突
#   → 【如果要用于 MD 或对接,建议开启】
#   → 只影响局部几何,不改变整体折叠

# --templates
#   使用 PDB 中的同源结构作为模板
#   → 对有近缘结构的蛋白有帮助
#   → 但也可能把模板的构象偏好带进来
#   → 【想预测非模板构象时应关闭】

# --msa-mode
#   mmseqs2_uniref_env  默认,最全
#   mmseqs2_uniref      只用 UniRef,更快
#   single_sequence     【不用 MSA】—— 用于测试无 MSA 时的表现

# --pair-mode(多链)
#   unpaired_paired  默认
#   paired           只用配对的 MSA(对复合物更好)
#   unpaired         不配对

多链复合物预测

# 输入 FASTA 中用冒号分隔各链
# input.fasta:
#   >complex_AB
#   MKTAYIAKQRQISFVKSHFSRQ:MSKGEELFTGVVPILVELDGDV

colabfold_batch complex.fasta out/ \
  --model-type alphafold2_multimer_v3 \
  --num-recycle 12 \
  --num-models 5

# 同源多聚体:重复同一序列
#   >homodimer
#   MKTAYIAK...:MKTAYIAK...

# 判读多链预测:
#   看 ipTM(界面置信度)而非只看 pLDDT
#     ipTM > 0.8   界面很可能正确
#     ipTM 0.6~0.8 不确定
#     ipTM < 0.6   界面预测不可靠
#
#   看链间 PAE
#     两条链间的 PAE 低 = 相对取向可信
#     PAE 高 = 各链结构可信但相对位置不可信
#
#   看多个模型的一致性
#     5 个模型给出相似的界面 = 更可信
#
# 提醒:
#   AF2-Multimer 对【弱瞬时相互作用】预测不可靠
#   对抗体-抗原界面表现也不佳(见 364)
#   → 复合物预测建议用 Boltz-2 或 Chai-1(见 121、122)

输出文件的解读

文件 内容
*_relaxed_rank_001_*.pdb 最佳模型(Amber 弛豫后)
*_unrelaxed_rank_*.pdb 未弛豫的原始预测
*_scores_rank_*.json pLDDT、PAE、pTM、ipTM
*_predicted_aligned_error_v1.json PAE 矩阵
*.a3m MSA(可复用,省去重新搜索)
*_coverage.png MSA 覆盖度图
*_PAE.png PAE 热图
*_plddt.png 逐残基 pLDDT 曲线

先看 *_coverage.png:如果 MSA 很浅(同源序列少),说明预测的先天条件就不好,不必对结果期望太高。

实用技巧

  • 保存并复用 MSA.a3m 文件可以直接作为输入,跳过搜索——调参重跑时能节省大量时间
  • 低置信度时的应对顺序:① 增加 --num-recycle;② 检查 MSA 覆盖度;③ 尝试 --templates;④ 分域分别预测(长的多域蛋白);
  • 探索多构象:增加 --num-seeds,并尝试 --max-msa 32:64 这类降低 MSA 深度的设置——减少 MSA 有时能让模型采样到不同的构象状态,这是研究构象变化的一个技巧;
  • 长序列显存不足:分域预测,或用 --use-gpu-relax false
  • 敏感序列不要用远程 MMseqs2 服务器——序列会发送到外部。用本地数据库方案。

关键要点

  • 用 MMseqs2 替代传统搜索工具,把 MSA 搜索从小时级压到分钟级且无需本地数据库
  • 保存 .a3m 复用,调参重跑时可跳过最耗时的步骤;
  • 低置信度时先加大 --num-recycle降低 MSA 深度有时能采样到不同构象
  • 敏感序列不要用远程服务器——序列会发送到外部。

延伸资源