AI蛋白质设计:从扩散模型到序列生成的实战指南
2026/8/30 15:01:16 网站建设 项目流程

看到“科学家用 AI 创建出 16 种新病毒”这个标题时,很多人的第一反应是担忧:AI 是不是已经可以随意制造危险生物了?这种焦虑很合理,但如果只停留在恐慌层面,反而会错过这项研究背后真正的技术突破——AI 正在从“写文字、画图片”走向“设计蛋白质、改造生物系统”这一全新领域。

本文不讨论科幻电影式的“人造病毒”,而是从技术角度拆解这件事:科学家到底用了什么样的 AI 工具链?这些模型是怎么工作的?如果我自己想上手做蛋白质设计实验,该怎么搭建环境、写代码、跑通一个最小案例?同时,我也会把生物安全和科研伦理问题单独拎出来,讲清楚哪些事情必须在什么边界内做。

无论你是刚接触 AI 的开发者,还是做后端、算法、生物信息学的工程师,这篇文章都会给你一条清晰的学习路径。

1. AI 生成新病毒的新闻背景与核心解读

1.1 新闻到底说了什么

根据公开报道,海外研究团队使用 AI 蛋白质设计工具,成功构建了一批“病毒样结构”。这里需要特别注意措辞:新闻里说的“新病毒”,更准确的理解是基于蛋白质从头设计的病毒样颗粒(Virus-Like Particles, VLPs)或衣壳结构,而不是我们在传染病语境中常说的那种具有感染能力、能自我复制的活病毒。

这个区分非常重要。

传统意义上的病毒,除了蛋白质外壳,还需要完整的核酸基因组、感染机制、宿主识别等一系列复杂组件。而这次研究中所说的“新病毒”,更多是指在实验室中通过 AI 设计出新的蛋白质组装体,它们可能在形态上类似病毒外壳,但不等同于天然致病病毒。

研究人员的目标也并不是为了制造威胁,而是为了验证:AI 是否能够从零开始设计自然界不存在的蛋白质结构?如果这个技术成熟,未来在疫苗载体、药物递送、纳米材料等领域都会有巨大的应用潜力。

1.2 这项技术为什么引发关注

这则新闻被大量转发,本质上是因为它触及了 AI 能力的边界。

过去几年,AI 在蛋白质领域的突破集中在“预测”:给定一条氨基酸序列,预测它会折叠成什么样的三维结构。代表成果就是 DeepMind 的 AlphaFold 系列。但当 AI 开始转向“设计”,问题的复杂度就完全不同了——它不是从序列到结构,而是反过来,要从目标结构出发,生成符合该结构的全新序列

这就好比:

  • AlphaFold 是“看到图纸,推断这座桥怎么建”;
  • AI 蛋白质设计是“告诉你桥的形状和承重要求,让你从零设计出所有构件”。

后者显然更具挑战性,也更有工程意义。

1.3 本文适合哪些读者

  • 对 AI for Science 感兴趣,想了解 AI 如何进入生命科学领域;
  • 后端或算法工程师,想快速上手蛋白质设计相关工具链;
  • 学生或研究者,需要了解扩散模型在生物分子领域的应用;
  • 运维或平台开发,需要为生物计算任务搭建 GPU 环境。

读完这篇文章,你至少能掌握:蛋白质设计的基本概念、主流 AI 模型的原理、一个可运行的蛋白质设计最小案例、以及实际工程中会遇到的高频问题。

2. AI 蛋白质设计的基础概念

2.1 蛋白质:从序列到结构再到功能

蛋白质由 20 种氨基酸按特定顺序连接而成。氨基酸序列决定了蛋白质在空间中如何折叠,而折叠后的三维结构决定了它“能干什么”。

这条逻辑链可以简化成:

氨基酸序列 -> 三维结构 -> 生物学功能
  • 序列:像一串字符,例如MKTIIALSYIFCLVFADYKDDDDK
  • 结构:蛋白质在空间中真正形成的立体形状;
  • 功能:酶催化、信号传导、识别抗原、组装成病毒外壳等。

在天然进化中,序列、结构和功能是亿万年试错的结果。而 AI 要做的事情,就是把这套“试错”过程压缩到毫秒级。

2.2 蛋白质设计的两种路径

AI 蛋白质设计目前大致分为两种路径:

正向设计(序列 -> 结构)

先设计一条氨基酸序列,再预测它的结构。这种方式本质上还是“预测”,只不过序列是自己写的。

逆向设计(结构 -> 序列)

先指定一个目标三维结构,再用 AI 生成能够折叠成该结构的氨基酸序列。这是当前更前沿的方向,也是新闻中提到的“16 种新病毒”背后使用的核心思路。

更精确地说,逆向设计还可以拆成两步:

  1. 使用结构扩散模型从随机噪声中生成主链原子坐标;
  2. 使用序列设计网络(如 ProteinMPNN)为生成的主链结构匹配氨基酸序列。

2.3 什么是病毒样颗粒

病毒样颗粒是模仿天然病毒结构的人工蛋白组装体。它们有和病毒相似的外形,但不含病毒基因组,因此没有感染能力。

科学家设计新病毒样颗粒的动机之一是开发更安全的疫苗载体:把抗原蛋白展示在颗粒表面,让人体免疫系统看到“病毒长这样”,但不会真的致病。

所以,AI 设计出 16 种新病毒样颗粒,从科研价值上看,更像是“AI 撞开了蛋白质组装体设计的大门”。

3. 技术原理拆解:扩散模型如何“画”出蛋白质

这一章是全文的技术核心。我会尽量用工程开发者的视角去解释,而不是堆生物术语。

3.1 扩散模型与蛋白质结构生成

扩散模型(Diffusion Model)在图像生成领域已经有很成熟的应用:先在训练时给图片逐步加入噪声,再学习如何从噪声中恢复原始图片。

蛋白质结构扩散模型(如 RFdiffusion)借鉴了同样的思路,但关键区别在于,它操作的对象不再是像素,而是蛋白质骨架原子在三维空间中的坐标

RFdiffusion 的工作流程大致如下:

  1. 输入一个目标条件,可以是某种形状约束、结合位点信息,也可以是无条件生成;
  2. 从一个随机蛋白质主链结构出发;
  3. 通过多轮去噪过程,逐步将随机结构“雕琢”成符合约束的稳定结构。

RFdiffusion 基于 RoseTTAFold 的架构,所以它天然具备对蛋白质三维结构的理解能力。这也是它能够高质量生成单体、多聚体、结合蛋白等多种结构的原因。

3.2 结构生成与序列设计分离

这里有一个设计哲学:结构生成和序列设计不应该由同一个模型同时完成

在 RFdiffusion 中,模型负责生成主链坐标,而不直接给出氨基酸序列。主链坐标就像建筑的“钢筋框架”,还不清楚具体用什么材料填充墙体和门窗。

接下来第二步,会使用 ProteinMPNN 这样的模型,根据主链结构反推氨基酸序列。ProteinMPNN 是一种基于消息传递神经网络的序列设计器,它通过不断计算每个氨基酸位置与其相邻氨基酸之间的关系,来寻找最适合当前结构骨架的氨基酸序列。

这种“结构生成 + 序列设计”分离的模式,在工程上更容易调试。你可以固定结构生成的结果,反复替换序列设计策略,也可以反过来做对比实验。

3.3 验证:AlphaFold 的反向预言

AI 生成的结构和序列不一定是真的可折叠、稳定的。

所以在设计完成后,常规流程会做一次“真实性验证”:把生成的氨基酸序列再扔给 AlphaFold2 或其他结构预测工具,让模型预测这条序列会折叠成什么结构。

如果 AlphaFold2 预测出来的结构与 RFdiffusion 生成的目标结构高度一致(RMSD 值很小),说明这个设计很成功。

设计生成的结构G与序列S | v AlphaFold2预测序列S的结构G' | v 比较G和G'的相似度 | v 相似度高 -> 设计可信 相似度低 -> 迭代优化

这个思路有点类似于工程开发中的“编译器和解释器互相验证”:一个模型负责生成,另一个模型负责验证,双方交叉确认,降低出错的概率。

4. 环境准备与工具链

要本地运行蛋白质设计模型,环境配置是很多开发者容易卡住的地方。下面我以当前常用的开源工具链为例,给出完整的环境搭建思路。

版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。不同服务器的 CUDA、cuDNN 版本可能不同,如果遇到兼容问题,优先用 Docker 或 conda 锁定环境。

4.1 硬件要求

蛋白质结构扩散模型对显存要求较高,建议至少准备:

  • NVIDIA GPU,显存 16GB 以上;
  • 如果只做小规模测试,12GB 显存也可以勉强运行,但需要降低生成参数;
  • 磁盘剩余空间建议 50GB 以上,因为模型权重文件较大;
  • 内存建议 32GB 以上。

如果本地没有 GPU,可以考虑云 GPU 服务器或者 Colab,但不建议用 CPU 跑结构生成,速度会慢到不可接受。

4.2 安装基础依赖

推荐使用 conda 管理环境:

conda create -n protein-design python=3.10 conda activate protein-design

接下来安装 PyTorch。不同 CUDA 版本的安装命令不一样,建议到 PyTorch 官网获取对应命令,这里以 CUDA 11.8 为例:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

4.3 克隆模型仓库

以 RFdiffusion 为例:

git clone https://github.com/RosettaCommons/RFdiffusion.git cd RFdiffusion

按照官方文档安装依赖并配置模型权重。

ProteinMPNN 也可以通过官方 GitHub 仓库安装:

git clone https://github.com/dauparas/ProteinMPNN.git cd ProteinMPNN

这里需要特别提醒:这两个仓库的 release 版本迭代比较频繁,安装依赖时如果遇到版本冲突,建议优先查看官方 README 和 GitHub Issues,不要盲目升级所有依赖。

5. 实战示例:用扩散模型设计一个非致病蛋白质单体

在正式开始前,必须先说明界限。本文示例目标是非致病性蛋白质单体设计,不涉及任何病毒基因、病原体改造或感染实验。涉及病原体相关研究时,必须在具备资质并有严格审批的实验室中进行。

5.1 创建项目结构

建议按下面的结构组织文件:

protein-design-demo/ ├── inputs/ │ └── target.pdb ├── outputs/ │ ├── diffusion/ │ └── mpnn/ ├── scripts/ │ └── run_pipeline.sh └── README.md

inputs存放输入结构文件,outputs保存模型输出,scripts用来放串联整个流程的脚本。

创建目录:

mkdir -p protein-design-demo/{inputs,outputs/diffusion,outputs/mpnn,scripts}

5.2 准备输入结构文件

RFdiffusion 支持从已有 PDB 结构中提取某个 motif,或者输入一个骨架区域作为条件。如果你的目标是不依赖参考结构、从头生成一个新的稳定蛋白,就可以使用“无条件生成”模式,这样不需要准备输入 PDB。

如果我们要做一个“以某个结合位点为条件”的设计,那么需要准备一个 PDB 文件,并指定残基索引范围。这里简化处理,先跑一个无条件生成单体的示例。

5.3 运行 RFdiffusion 生成主链结构

在 RFdiffusion 目录下执行:

python scripts/run_inference.py \ inference.output_prefix=./outputs/diffusion/design \ inference.model_directory_path=./models \ inference.num_designs=2 \ diffuser.T=50 \ contigmap.contigs=[100]

参数说明:

  • inference.output_prefix:输出文件前缀,会生成design_0.pdbdesign_1.pdb等;
  • inference.model_directory_path:模型权重所在目录;
  • inference.num_designs:生成的候选结构数量;
  • diffuser.T:扩散去噪步数,50 是较快的测试配置,追求质量可以调大到 200;
  • contigmap.contigs=[100]:表示生成一个长度为 100 个氨基酸的单体蛋白。

生成成功后,在outputs/diffusion目录下会看到以design_开头的 PDB 文件。PDB 文件里记录了每个原子的三维坐标,这就是蛋白质的“骨架图纸”。

5.4 使用 ProteinMPNN 设计氨基酸序列

拿到了主链坐标,下一步要为这个骨架匹配氨基酸序列。

先把 PDB 文件转换为 ProteinMPNN 需要的 JSONL 格式。

进入 ProteinMPNN 目录,使用辅助脚本:

python helper_scripts/parse_multiple_chains.py \ --input_path ../protein-design-demo/outputs/diffusion/design_0.pdb \ --output_path ../protein-design-demo/outputs/mpnn/design_0_parsed.json

然后运行序列设计:

python protein_mpnn_run.py \ --jsonl_path ../protein-design-demo/outputs/mpnn/design_0_parsed.json \ --out_folder ../protein-design-demo/outputs/mpnn \ --num_seq_per_target 4 \ --batch_size 1

参数说明:

  • --jsonl_path:输入文件;
  • --out_folder:输出目录;
  • --num_seq_per_target:每个骨架生成多少条候选序列,数值越大后续可选择的序列越多;
  • --batch_size:预测时的批次大小,受显存限制。

ProteinMPNN 会输出多组氨基酸序列,你可以根据序列的置信度选择候选序列进行下一步验证。

5.5 使用 AlphaFold2 验证结构

接下来是验证环节。把上一步生成的最佳序列提取出来,然后使用 AlphaFold2 进行结构预测。

需要说明的是,AlphaFold2 的本地部署比较重,很多团队会选择使用在线版或 Colab 版。这里重点是理解验证逻辑:

  1. 取 ProteinMPNN 输出的序列;
  2. 使用 Alphafold2 预测该序列的结构;
  3. 将预测结构与 RFdiffusion 生成的主链结构进行比对;
  4. 计算 RMSD 和 pLDDT 分数。

如果 AlphaFold2 预测出的结构与 RFdiffusion 生成结构非常相似,说明这条序列确实可以折叠成目标形状,设计可信度较高。反之,如果差异很大,则需要调整参数重新生成。

5.6 结果评估与筛选

拿到输出后,可以通过脚本快速筛选。比如,使用 PyMOL 或者 BioPython 计算两个结构之间的 RMSD。

下面是一段使用 BioPython 计算 RMSD 的参考示例:

# 文件路径:protein-design-demo/scripts/calc_rmsd.py import Bio.PDB def calc_rmsd(pdb1, pdb2, atom_name="CA"): parser = Bio.PDB.PDBParser(QUIET=True) structure1 = parser.get_structure("ref", pdb1) structure2 = parser.get_structure("model", pdb2) atoms1 = [atom for atom in structure1.get_atoms() if atom.get_name() == atom_name] atoms2 = [atom for atom in structure2.get_atoms() if atom.get_name() == atom_name] if len(atoms1) != len(atoms2): raise ValueError("两个结构的原子数量不一致") sup = Bio.PDB.Superimposer() sup.set_atoms(atoms1, atoms2) print(f"RMSD: {sup.rms:.2f} Å") if __name__ == "__main__": calc_rmsd("design_0.pdb", "alphafold_prediction.pdb")

如果 RMSD 在 1-2 Å 范围内,通常认为结构吻合度很高。实际项目中还会结合 pLDDT、Rosetta 能量评分等综合判断。

6. 常见问题与排查思路

本地运行蛋白质模型时,最常遇到的问题集中在环境冲突、显存不足和结果不合理三个方面。

6.1 GPU 显存不足

问题现象常见原因解决思路
CUDA out of memory生成序列过长或 batch_size 过大缩短 contigs 长度、减小 batch_size、降低扩散步数
启动时报 CUDA 错误PyTorch 与 CUDA 版本不匹配按官方文档重新安装 PyTorch
训练或推理速度很慢模型没有真正调用 GPU检查nvidia-smi,确认进程是否占用 GPU

6.2 PDB 文件解析失败

问题现象常见原因解决思路
parse_multiple_chains.py 报错输入 PDB 中缺少链信息用 PyMOL 或脚本补充链标识
氨基酸编号不连续输入文件来自不完整结构使用pdb_selresno类工具重排残基编号
文件中包含非标准氨基酸设计过程引入了非标准残基统一转成标准 20 种氨基酸

6.3 设计结果不合理

问题现象常见原因解决思路
AlphaFold2 预测结构与目标结构差异大RFdiffusion 生成的结构本身不稳定增加 diffuser.T 步数、生成更多候选结构
ProteinMPNN 输出的序列置信度都很低主链骨架不够合理检查骨架原子是否有空间碰撞,适当调整 contig 长度
多个候选结构重复度高随机种子固定或采样不足修改随机种子、增加inference.num_designs

6.4 环境依赖冲突

蛋白质设计相关工具往往依赖特定版本的 PyTorch、CUDA、dgl 等库,升级任何一个都可能引发连锁问题。

我的建议是:项目使用独立的 conda 环境,避免与日常开发环境混用。如果在一个服务器上需要跑多个类似项目,优先考虑 Docker,把模型权重和依赖打包在一起。

7. 工程化与生物安全最佳实践

7.1 生物信息学代码工程化

很多人把蛋白质设计脚本写成一次性脚本,用完就丢。但如果想在项目中真正落地,代码工程化非常重要:

  • 输入输出路径参数化,不要写死绝对路径;
  • 用配置文件管理模型路径和参数,例如 YAML 或 JSON;
  • 记录每次实验的随机种子和版本信息,方便复现;
  • 生成结果时要汇总 pLDDT、RMSD 等评价指标到 CSV,便于横向对比;
  • 对 PDB 文件做自动校验,避免无效输入在后续步骤中造成不可预期错误。

一个最小的 YAML 配置文件示例:

project: name: protein_design_demo output_dir: ./outputs rfdiffusion: model_dir: ./models num_designs: 4 diffuser_t: 200 contigs: "[120]" proteinmpnn: num_seq_per_target: 8 batch_size: 1 validation: tool: "alphafold2" rmsd_threshold: 2.0

这样配置的好处是,换实验只需要改配置,不需要改代码。

7.2 生物安全与合规

这是整个领域不可回避的问题。

AI 蛋白质设计具备极强的“双刃剑”属性。一方面,它可以帮助科研人员快速设计疫苗、抗体、酶等;另一方面,如果被滥用,理论上也可能被用于制造有风险的生物分子。

所以在实际工程中,必须遵守以下底线:

  • 涉及病原体相关研究,必须在具备相应生物安全等级资质的实验室内进行;
  • 所有设计结果在进行湿实验前,需要通过生物安全审查;
  • 对于序列设计结果,建议进行 BLAST 同源性搜索,排除与已知毒素或病原体组分的意外相似;
  • 不要公开发布可直接绕过安全审查的端到端自动化工具;
  • 任何合成 DNA 的采购行为都必须符合所在地区和国家的监管要求。

作为开发者,我们可以追求技术能力,但更应该清楚:模型的能力越大,使用者需要承担的责任也越大。

7.3 可解释性与可靠性

AI 生成的蛋白质结构并不是“一锤子买卖”。

在真实科研项目中,通常需要将多个不同模型的设计结果交叉验证:RFdiffusion 生成骨架、ProteinMPNN 生成序列、AlphaFold2 验证结构、Rosetta 计算能量,最后再由实验人员表达纯化蛋白,通过圆二色谱、X 射线晶体学或冷冻电镜来确认真实结构。

AI 只是第一道筛选器。它输出的结果显著提高了从“想象结构”到“拿到真实蛋白”的命中率,但不能替代实验室里的最后验证。在工程上,我们最好把 AI 设计看作一个“高速预筛系统”,而不是“最终答案生成器”。

8. 总结与下一步学习路线

这篇文章从新闻事件出发,梳理了 AI 蛋白质设计的技术逻辑,从扩散模型生成骨架,到 ProteinMPNN 设计序列,再到 AlphaFold2 验证结构,并给出了一套完整的环境搭建和最小运行示例。

如果你第一次接触这个方向,也不需要被庞大的生物术语吓倒。可以把蛋白质设计理解为“结构数据上的生成模型应用”:核心还是深度学习、扩散模型、图神经网络和数据处理这些你熟悉的工程领域知识,只是数据形态从文本、图片变成了三维坐标。

下一步可以按这个路线继续深入:

  1. 学习 PDB 文件格式、认识蛋白质结构里的原子坐标信息;
  2. 阅读 RFdiffusion 和 ProteinMPNN 的原始论文,理解模型设计的细节;
  3. 跑通官方提供的 notebook 示例,修改参数观察不同效果;
  4. 尝试设计一个短肽结合蛋白,并使用 AlphaFold2 做自我验证;
  5. 如果对算法感兴趣,可以进一步研究 RoseTTAFold 和 AlphaFold 的模型架构差异。

最后想多说一句:科技新闻往往喜欢用耸动的标题吸引眼球,但真正值得关注的,永远是背后扎实的研究方法。AI 设计蛋白质这件事,未来一定会走进制药、材料、环保等更多行业。能够越早理解它的人,就越有机会在这个交叉领域找到自己的位置。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询