有一个项目叫做 LocalColabFold,但是在国内服务器上安装各种依赖和解决依赖冲突实在是灾难,项目在这里:GitHub - YoshitakaMo/localcolabfold: ColabFold on your local PC
一个很好的解决办法是使用 Docker/singularity 来运行 ColabFold:Running ColabFold in Docker · sokrypton/ColabFold Wiki · GitHub
拉取镜像
将 ghcr.io
替换为 ghcr.nju.edu.cn
即可,用南大的镜像站
singularity pull docker://ghcr.nju.edu.cn/sokrypton/colabfold:1.5.5-cuda12.2.2
权重文件下载
singularity run -B ./cache:/cache \
colabfold_1.5.5-cuda12.2.2.sif \
python -m colabfold.download
这个会在当前目录下创建一个 cache
,里面会下载权重文件,速度忽好忽慢
运行预测
我写了俩脚本,一个用于快速预测,另外一个用来精细化预测,而且因为实验室的卡有两张 A 100,所以我还尝试做了并行优化
这个优化的逻辑其实很简单,就是在一个文件夹下面放多个蛋白的 fasta 文件,然后脚本去取两个蛋白,分别丢到两个 GPU 上,这个过程并不涉及交火,所以其实性能损耗很小
但是似乎效果不太好
运行脚本大概是:
bash run_parallel_colabfold.sh --input liueic/protein_data --out liueic/output_dir --cache liueic/colabfold_cache --work-bind liueic/protein_data --sif liueic/colabfold_1.5.5-cuda12.2.2.sif --gpus 1 --tasks-per-gpu 1 --colabfold-args "--num-models 5 --num-recycle 6 --max-seq 256 --max-extra-seq 512 --msa-mode mmseqs2_uniref_env --pair-mode unpaired_paired --model-type auto --stop-at-score 90 --zip"
刚开始预测的时候速度比较慢,但是我能看到显存已经被占用了,打开日志可以看到,是因为请求 MSA 服务:
[00:23:21] [GPU 0] [] WARNING: You are welcome to use the default MSA server, however keep in mind that it's a
[00:23:21] [GPU 0] [] limited shared resource only capable of processing a few thousand MSAs per day. Please
[00:23:21] [GPU 0] [] submit jobs only from a single IP address. We reserve the right to limit access to the
[00:23:21] [GPU 0] [] server case-by-case when usage exceeds fair use. If you require more MSAs: You can
[00:23:21] [GPU 0] [] precompute all MSAs with `colabfold_search` or host your own API and pass it to `--host-url`
如果是要做高通量并行这样是不行的,比较好的方法是自部署一个 MSA 服务,可以参考:GitHub - sokrypton/ColabFold: Making Protein folding accessible to all!
但是这个磁盘需求比较大,应该需要一台专门的服务器来做这个:
First create a directory for the databases on a disk with sufficient storage (940 GB (!)). Depending on where you are, this will take a couple of hours
目前即使不自己部署 MSA,其实也是能接受的,大不了晚上睡一觉起来又好了,因为也就几百个蛋白(?可能)
为什么要做 MSA
您的问题非常关键!在生物信息学和结构生物学领域,**MSA** 通常指的是 **多序列比对(Multiple Sequence Alignment)**。它是像 ColabFold 和 AlphaFold 这样的蛋白质结构预测工具的**核心基石**。
**为什么要进行多序列比对 (MSA)?** 简单来说,**MSA 提供了预测蛋白质结构所需的关键进化信息。**
---
## MSA 在蛋白质结构预测中的作用
蛋白质的形状(三维结构)决定了它的功能。生物在数十亿年的进化过程中,会不断地对蛋白质进行微小的变异(突变)。**序列相似的蛋白质往往具有相似的结构和功能。**
MSA 的作用就是将目标蛋白质(您想预测结构的那个)的序列,与数据库中数百万个已知的、具有进化关联性的同源蛋白质序列进行对齐。
### 1. 识别共进化残基 (Co-evolution)
这是 MSA 最核心的功能,也是 AlphaFold 成功的关键:
- **功能:** 当两个氨基酸残基在蛋白质结构中靠得很近时(即使它们在序列上相距很远),它们的突变往往不是独立的。如果一个位置发生了突变,另一个位置可能也需要同时发生突变,以维持蛋白质的稳定性和功能。
- **MSA 的贡献:** 通过比对成千上万个同源序列,MSA 可以统计出哪些残基对总是**一起突变(共进化)**。
- **结果:** 这种共进化模式(或称为 **进化耦合**)强烈暗示这两个残基在三维空间中是**物理接触**的。这提供了构建蛋白质结构所需的**距离约束**,帮助 AI 模型将一维序列信息转化为三维结构。
### 2. 识别保守区域 (Conservation)
- **功能:** 在进化的过程中,那些对蛋白质核心功能或结构稳定性**至关重要**的氨基酸残基,其序列变异的可能性会非常低。
- **MSA 的贡献:** 在比对结果中,那些在几乎所有同源序列中都保持不变(或只变异成化学性质相似的氨基酸)的位置,被称为**高度保守区域**。
- **结果:** 这些保守区域通常对应于活性位点、结合口袋或结构核心,为模型提供了重要的**功能和结构提示**。
### 3. 提供结构和功能的多样性
- MSA 不仅告诉模型序列中**相似**的部分,也告诉它**可变异**的部分。这有助于模型区分蛋白质的核心骨架和柔性的环区,从而构建出一个**更真实**、**更准确**的结构模型。
---
## 总结
**没有高质量的 MSA,就没有准确的蛋白质结构预测。**
MSA 就像一本**进化历史书**,它告诉像 ColabFold 这样的深度学习模型:
- **哪些残基必须靠在一起**(通过共进化信号)。
- **哪些残基不能改变**(通过保守性信号)。
因此,您在日志中看到的 `colabfold_search` 或 API,其目的就是在预测蛋白质结构的第一步中,**尽可能快、尽可能完整地生成这个至关重要的 MSA 文件**。