AlphaFold 运行前 monomer、monomer_casp14 与 monomer_ptm 模型预设怎么选
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
当你已经按 README 完成了 AlphaFold 的安装(Linux 系统、Docker 镜像、遗传数据库与模型参数下载),准备对单条或多条蛋白序列跑结构预测时,docker/run_docker.py的--model_preset参数对单链(monomer)预测有三种可选值:monomer、monomer_casp14和monomer_ptm。三者使用同一批 CASP14 原始权重,区别在于是否做 8 倍集成(ensemble)以及是否带 pTM 头。选错预设会带来 8 倍的算力浪费,或者拿到精度略低的结构,下面说明三者的实际差异、各自的适用目标,以及运行后如何核对输出是否符合所选预设。
三个预设到底有什么区别
--model_preset在 docker/run_docker.py 中定义,默认值为monomer,合法取值为monomer、monomer_casp14、monomer_ptm和multimer(多聚体不在本文范围内)。这个参数最终会被原样传给容器内的 run_alphafold.py,其取值同样限制为这四个(run_alphafold.py#L106-L107)。
预设到具体模型权重的映射在 alphafold/model/config.py 的MODEL_PRESETS中:
monomer对应model_1到model_5共 5 个 CASP14 模型;monomer_ptm对应model_1_ptm到model_5_ptm共 5 个 pTM 微调模型;monomer_casp14直接等于MODEL_PRESETS['monomer'],即与monomer使用同一组权重。
所以monomer和monomer_casp14的权重完全相同,差异只在推理配置。run_alphafold.py#L452-L455 中:当model_preset为monomer_casp14时num_ensemble = 8,其余预设(包括monomer和monomer_ptm)均为num_ensemble = 1。
README 对三个预设的官方描述(README.md,“Running AlphaFold” 一节):
- monomer:CASP14 使用的原始模型,不做集成(no ensembling)。
- monomer_casp14:CASP14 原始模型配
num_ensemble=8,匹配 CASP14 当时的配置。README 明确说明它 largely provided for reproducibility(主要为可复现性提供),算力开销是 8 倍,精度增益有限(CASP14 域上平均 GDT 仅 +0.1)。 - monomer_ptm:CASP14 原始模型用 pTM 头微调而来,在结构预测之外额外提供 pTM(predicted TM-score)和 PAE(predicted aligned error)这类成对置信度量;README 指出它比常规 monomer 模型精度略低(slightly less accurate)。
按目标选择预设
| 你的目标 | 选择 | 依据 |
|---|---|---|
| 日常单链结构预测(默认路径) | monomer(默认值,可省略该参数) | 权重即 CASP14 原始模型,不做集成,算力最省 |
| 复现 CASP14 系统配置 | monomer_casp14 | 唯一带num_ensemble=8的预设,与 CASP14 配置一致 |
| 需要 pTM / PAE 置信度量 | monomer_ptm | 唯一带 pTM 头的预设,代价是结构精度略低 |
判断逻辑很直接:只有当任务本身要求 CASP14 可复现性,才为 8 倍算力换取 +0.1 平均 GDT 的增益选monomer_casp14;只有当下游分析需要整体打包置信度(pTM)或残基间对齐误差图(PAE)时,才接受结构精度略降选monomer_ptm。除此之外都走默认的monomer。
另外注意:复现 CASP14 不只是换一个预设。README 的 “Note on CASP14 reproducibility” 一节指出,默认下载脚本得到的数据库版本与 CASP14 当时使用的并不一致;若要用最新 PDB/PDB70 逼近 CASP14 条件,需传--max_template_date=2020-05-14把模板限制在 CASP14 开始之前可用的结构。
运行命令
以下命令来自 README 的 “Folding a monomer” 示例,三个预设只改--model_preset一行。前置条件与首次运行相同:Linux 机器、NVIDIA GPU、已用scripts/download_all_data.sh下载好数据库和参数(目录下文统称$DOWNLOAD_DIR)、Docker 镜像已构建、输出目录可写。
变量说明:
monomer.fasta:你的输入 FASTA 文件,按 README 格式包含序列名和<SEQUENCE>序列;$DOWNLOAD_DIR:下载脚本中你传入的目标目录(shell 变量,需与下载时一致,不要放在 AlphaFold 仓库目录内);--output_dir:输出目录的绝对路径,不指定时默认为/tmp/alphafold/;--max_template_date:模板结构可用的最晚发布日期,示例日期取自 README。
默认预设(省略--model_preset即为monomer,这里显式写出):
python3 docker/run_docker.py \ --fasta_paths=monomer.fasta \ --max_template_date=2021-11-01 \ --model_preset=monomer \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/home/user/absolute_path_to_the_output_dirCASP14 复现配置(算力为monomer的 8 倍):
python3 docker/run_docker.py \ --fasta_paths=monomer.fasta \ --max_template_date=2021-11-01 \ --model_preset=monomer_casp14 \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/home/user/absolute_path_to_the_output_dir带 pTM 头:
python3 docker/run_docker.py \ --fasta_paths=monomer.fasta \ --max_template_date=2021-11-01 \ --model_preset=monomer_ptm \ --data_dir=$DOWNLOAD_DIR \ --output_dir=/home/user/absolute_path_to_the_output_dir如果数据库是用reduced_dbs方式下载的(scripts/download_all_data.sh <DOWNLOAD_DIR> reduced_dbs),命令中需同时加--db_preset=reduced_dbs;db_preset与model_preset相互独立,前者控制 MSA 数据库规模与速度,后者只控制模型。
运行后如何验证选对了预设
README 的 “AlphaFold output” 一节给出了输出目录结构(--output_dir下以目标名命名的子目录),其中用于区分预设的关键判断如下。
三个预设都会产生:
ranked_0.pdb等按置信度排序的结构(ranked_0.pdb置信度最高),排序依据 pLDDT;unrelaxed_model_*.pdb、relaxed_model_*.pdb、result_model_*.pkl、ranking_debug.json、timings.json、msas/;- pLDDT 分数存在
result_model_*.pkl的plddt字段(形状 [N_res],0–100),同时写入输出 PDB 的 B-factor 字段(注意 pLDDT 越高越好,与常规 B-factor 方向相反)。
只有monomer_ptm会额外产生两个字段,它们存在于result_model_*.pkl中,且 README 明确标注 “Present only if using pTM models”:
ptm:标量,predicted TM-score;predicted_aligned_error:形状 [N_res, N_res] 的数组,0 表示最可信,可用于可视化结构内部的域打包置信度。
因此核对方式:跑完后加载result_model_*.pkl,若任务要求 pTM/PAE,检查ptm和predicted_aligned_error字段是否存在;不存在说明没跑monomer_ptm。而monomer_casp14与monomer的输出文件结构相同(权重相同、仅num_ensemble不同),无法从输出文件区分二者,只能回看运行命令确认--model_preset的取值。
限制与边界
monomer_casp14的 8 倍算力开销和 +0.1 平均 GDT 增益是 README 给出的 CASP14 域上的数据,只应作为“为复现而付出成本”的权衡依据,README 的定位就是 reproducibility,不是精度最优选项。monomer_ptm精度略低于常规 monomer 模型是 README 的明确说法,若下游只需要结构,没有理由选它。- 本文只覆盖单链预设。蛋白复合物、同源多聚体(homomer)等场景应使用
--model_preset=multimer,且需要额外下载 UniProt 数据库,属于另一条路径,不在本文展开。 - 数据库版本影响结果:少量蛋白(如 T1064)输出在随机种子和输入数据库变化下波动较大;严格复现时按 README 的 CASP14 reproducibility 一节固定数据库版本和
--max_template_date。
【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考