从氨基酸序列到三维结构:AlphaFold 蛋白质结构预测的最小可行链路
从氨基酸序列到三维结构AlphaFold 蛋白质结构预测的最小可行链路【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold手上有一条氨基酸序列想知道它的三维结构又不想自己从零搭 MSA 检索、模板搜索、模型推理这一整套流程——AlphaFold 官方开源仓库就是干这件事的把 AlphaFold 2 的完整推理管线多序列比对构建、JAX 模型前向、Amber 结构松弛打包成一条命令你只需提供 FASTA 序列就能拿回带 pLDDT 置信度的预测 PDB 结构。下面按能跑起来的最短路径走一遍。它解决了什么问题给一条序列它帮你算出两样东西残基级别的原子坐标PDB 文件以及每个残基的预测置信度pLDDTPredicted Local Distance Difference Test0-100越高越可信。整个流程里最耗时的 MSAMultiple Sequence Alignment多序列比对检索、模板结构搜索、5 个模型的并行推理、结果排序和松弛全部由docker/run_docker.py一条命令完成。官方在 A100 上给出的参考耗时300 残基的蛋白不含 MSA 的纯推理约 13 秒具体以 README 中的预测速度表为准。适用边界要心里有数它需要 Linux NVIDIA GPU全套数据库下载约 556 GB、解压后约 2.6 TBreduced_dbs预设可降到 600 GB 磁盘级别蛋白复合物同源/异源多聚体必须用--model_presetmultimer那是另一套模型和额外数据库不能拿单体流程直接跑。另外仓库里的 notebooks/AlphaFold.ipynb 是简化版——无模板、用缩减 BFD——适合快速验证精度对部分目标会有明显下降。核心模块在哪先记这几行docker/run_docker.py— 最外层入口负责挂载数据库、起容器、透传全部参数run_alphafold.py— 容器内的推理脚本串起 MSA、模型、松弛alphafold/model/model.py—RunModel类负责加载参数与 JAX 推理也是 Python API 的核心alphafold/model/config.py— 所有模型的ConfigDict与MODEL_PRESETSmonomer / monomer_ptm / multimer 等预设alphafold/data/pipeline.py— 把 FASTA 与 MSA 加工成模型特征字典alphafold/relax/relax.py— Amber 松弛修正预测结构的立体化学冲突alphafold/common/confidence.py— pLDDT / PAE 等置信度指标的计算跑通最小可用链路装环境与下载数据库这一步只需要在宿主机上完成三件事装依赖、装aria2c下载脚本用它、下载数据库和模型参数。⚠️ 下载目录千万别放在仓库目录里否则数据库会被复制进 Docker 构建上下文构建会非常慢。# 仓库目录内 pip3 install -r docker/requirements.txt # run_docker.py 只需这一个依赖 # 系统包管理器安装 aria2如 Debian: sudo apt install aria2 scripts/download_all_data.sh /data/af_data # 全套数据库约 556 GB # 或磁盘/带宽紧张时 scripts/download_all_data.sh /data/af_data reduced_dbs # 缩减版构建镜像并核对 GPUGPU 是否正常透传进容器是第一次跑最容易被忽略的一步官方单独给了验证命令docker build -f docker/Dockerfile -t alphafold . docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi # 应列出你的 GPU pip3 install -r docker/requirements.txt 2/dev/null || true # 宿主机侧依赖前面已装可跳过准备 FASTA 输入并发起预测输入就是一个 FASTA 文件序列头随意。发起预测时注意四个关键参数--data_dir指向上面下载的目录--max_template_date限制模板结构只取该日期之前的做回溯实验时很重要--db_preset必须和下载时的预设一致--output_dir用绝对路径。printf my_protein\nMAAAKLIVER...\n my_protein.fasta # 你的序列 python3 docker/run_docker.py \ --fasta_pathsmy_protein.fasta \ --max_template_date2022-01-01 \ --db_presetreduced_dbs \ --data_dir/data/af_data \ --output_dir/data/af_out想用 Python API 而不是 DockerDocker 是官方推荐的黑盒路径如果你想把预测嵌进自己的代码里核心就是RunModel三个方法的顺序调用——config.model_config取配置data.get_model_haiku_params从$DATA_DIR/params加载参数process_features把特征字典加工成模型输入predict前向推理。特征字典可以由alphafold/data/pipeline.py的DataPipeline从本地数据库构建需要 jackhmmer、hhblits 等二进制定位也可以复用 notebook 里的做法直接make_sequence_featuresmake_msa_features拼出来。import numpy as np from alphafold.model import config, data, model from alphafold.common import protein cfg config.model_config(model_1) # CASP14 单体 5 模型之一 params data.get_model_haiku_params(model_1, data_dir) # data_dir 即 download 目标目录 runner model.RunModel(cfg, params) raw {...} # 特征字典含 aatype/msa/template_* features runner.process_features(raw, random_seed0) result runner.predict(features, random_seed0) # pLDDT 写入 B 因子列后转 PDB 文本 b_factors np.repeat(result[plddt][:, None], 37, axis-1) prot protein.from_prediction( featuresfeatures, resultresult, b_factorsb_factors, remove_leading_feature_dimensionFalse) print(protein.to_pdb(prot)[:200])predict的返回值里除了原子坐标还有plddt已算好的逐残基置信度、distogram用 pTM 模型时还有predicted_aligned_error、ptmalphafold/common/confidence.py的compute_predicted_aligned_error可以把 PAE logits 还原成[N_res, N_res]的矩阵。拿到结果之后输出落在--output_dir下以 FASTA 基名命名的子目录结构固定my_protein/ ranked_0.pdb ... ranked_4.pdb # 按 pLDDT 排序ranked_0 置信度最高 unrelaxed_model_1..5.pdb # 5 个模型的原始输出 relaxed_model_*.pdb # 经 Amber 松弛后的结构默认只松弛最优的 ranking_debug.json # 各模型的 pLDDT 及与 model 名的映射 result_model_*.pkl # 模型原始输出distogram、plddt 等 timings.json / relax_metrics.json / features.pkl msas/ # 本次预测用的 MSA.a3m / .sto解读时抓住两点一是pLDDT 存在 PDB 的 B-factor 列里但方向和常规 B 因子相反——值越高越好0-100。直接拿这个 PDB 去做分子置换或任何按 B 因子筛选残基的下游工具时要特别小心否则会把高置信区域当噪声扔掉。二是默认只有ranked_0.pdb被松弛过其余是未松弛结构想要全部松弛就加--models_to_relaxall嫌松弛阶段不稳定就--models_to_relaxnone。进阶用法同一序列换参数重跑复用预计算 MSAMSA 检索通常占单次运行的最大头。如果你只是换--model_preset、换num_recycle这类参数重跑同一条序列加--use_precomputed_msastrue会直接读上次写进msas/的文件跳过整个检索阶段。⚠️ 它不校验序列和数据库是否变过换了序列或换了库版本就要老老实实重新检索。模型预设怎么选--model_preset默认monomerCASP14 那 5 个模型不带集成要 pTM/PAE 输出用monomer_ptm同一批模型微调出的 pTM 头官方说明精度略低于 monomermonomer_casp14是num_ensemble8的可复现配置计算量是 monomer 的 8 倍仅在复现论文时值得开。复合物场景把model_preset换成multimerFASTA 里放多条序列同序列多份即同源多聚体多序列即异源多聚体此时必须已下载 UniProt 与 PDB SeqRes。小蛋白在 A100 上吃不满显存的话可以调大alphafold/model/config.py里global_config.subbatch_size提一点速度批量推理官方没有现成脚本思路是在RunModel.predict之上自己并行预计算 MSA。踩坑备忘现象原因解法Docker build 特别慢数据库目录被放进了仓库目录内整库被拷进构建上下文把$DOWNLOAD_DIR挪到仓库外如/data/af_datanvidia-smi容器内无输出NVIDIA Container Toolkit 未配好用docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi定位按 NVIDIA 官方指引重装 toolkit结果文件是空 PDB数据库权限不全MSA 工具静默失败sudo chmod 755 --recursive $DOWNLOAD_DIR下游按 B-factor 筛选后高置信区消失pLDDT 写在 B 因子列但语义相反越高越好处理前把该列反转或读ranking_debug.json里的 pLDDT【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考