20 分钟跑通:AlphaFold Python API 从序列输入到 PDB 输出 📅 发布时间:2026/9/11 14:52:51 👁 浏览次数: 20 分钟跑通AlphaFold Python API 从序列输入到 PDB 输出【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold本文以 AlphaFold 为例用 Python API 完整走一遍蛋白质结构预测从 FASTA 序列到 MSA 特征经 RunModel 推理得到原子坐标最后读出 pLDDT 置信度。先看清整体流程建立整体感只需要四行核心代码。结构预测的主干就是「序列 → 特征字典 → 模型输出」from alphafold.data import pipeline from alphafold.model import model, config, data feature_dict data_pipeline.process(input.fasta, msa_output) # 序列 → 特征字典 processed model_runner.process_features(feature_dict, random_seed0) result model_runner.predict(processed, random_seed0) # 推理 print(result[plddt]) # 每个残基的置信度0-100data_pipeline和model_runner是下面要构建的两个对象。result[plddt]是与序列等长的数组每个元素对应一个残基的置信度分数越接近 100 局部结构越可信。拿到这个数组只是推理完成要得到带原子坐标的文件还得做后处理。模块导航模块路径职责什么时候需要看它alphafold/data/pipeline.pyDataPipeline跑 jackhmmer/HHblits 搜 MSA组装输入特征要换数据库、调 MSA 命中数时alphafold/model/model.pyRunModel特征预处理、推理、置信度指标计算排查预测输出结构、加自定义逻辑时alphafold/model/config.pymodel_config按名称生成 model_1 到 model_5 配置切换单体/多聚体预设时alphafold/common/protein.pyfrom_prediction、to_pdb结果转 Protein 对象与 PDB 文本保存结构、对接可视化时alphafold/relax/relax.pyAmberRelaxation能量最小化松弛需要消除几何张力时run_alphafold.py命令行入口官方流程的完整参数组合对照 API 参数是否配齐时准备输入并跑推理写一个只含单条序列的 FASTA 文件DataPipeline.process只接受单条序列FASTA 里放多条会直接抛ValueError。把序列写进文件即可头部一行、序列一行sequence MAAHKGAEHHHKAAEHHEQAAKHHHAAAEHHEKGEHEQAAHHADTAYAHHKHAEEHAAQAAKHDAEHHAPKPH with open(input.fasta, w) as f: f.write(query\n sequence)序列长度 20 到 300 左右适合试跑太短 MSA 搜不到有效命中太长按后文避坑表处理。配置数据管道时必填的 5 组路径DataPipeline不内置任何数据库所有路径都要自己传。文件先用 scripts/download_all_data.sh 下载uniref90、mgnify、bfd、uniref30、pdb70 和 mmcif 模板目录。完整数据库超过 2 TB开发阶段可改用reduced_dbs预设配 small BFD。from alphafold.data import pipeline, templates from alphafold.data.tools import hhsearch template_searcher hhsearch.HHSearch( binary_pathshutil.which(hhsearch), databases[os.path.join(db_root, pdb70, pdb70)]) # 模板检索库 template_featurizer templates.HhsearchHitFeaturizer( mmcif_diros.path.join(db_root, pdb_mmcif, mmcif_files), max_template_date2021-12-01, # 只使用该日期前发布的模板 max_hits20, kalign_binary_pathshutil.which(kalign)) data_pipeline pipeline.DataPipeline( jackhmmer_binary_pathshutil.which(jackhmmer), hhblits_binary_pathshutil.which(hhblits), uniref90_database_pathos.path.join(db_root, uniref90, uniref90.fasta), mgnify_database_pathos.path.join(db_root, mgnify, mgy_clusters_2022_05.fasta), bfd_database_pathos.path.join(db_root, bfd, bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt), uniref30_database_pathos.path.join(db_root, uniref30, UniRef30_2021_03), template_searchertemplate_searcher, template_featurizertemplate_featurizer, use_small_bfdFalse) # 为 True 时改传 small_bfd_database_path这个对象内部依次执行jackhmmer 搜 uniref90 和 mgnifyHHblits 搜 bfd 与 uniref30hhsearch 在 pdb70 里找模板最后把三份 MSA 与模板特征合并成一个字典。process会把 MSA 缓存在msa_output_dir下的.sto/.a3m文件里复用结果时把use_precomputed_msas设为True即可跳过搜索。加载权重并执行 RunModel 推理RunModel接收两样东西模型配置和权重。权重是params_model_1.npz文件get_model_haiku_params会从data_dir/params/下读取from alphafold.model import model, config, data model_runner model.RunModel( config.model_config(model_1), # model_1 至 model_5 为 5 个集成模型 data.get_model_haiku_params(model_1, data_dir)) feature_dict data_pipeline.process(input.fasta, msa_output) processed model_runner.process_features(feature_dict, random_seed0) result model_runner.predict(processed, random_seed0)process_features把 numpy 特征数组转成模型输入并做随机增强predict返回含原子坐标和置信度的字典。多聚体场景用model_1_multimer_v3这类名称此时process_features会直接透传特征不做单体增强。把预测输出落成 PDB 结构result[structure_module]里有原子坐标和掩码。要写 PDB先包成Protein对象并把 pLDDT 写进 B-factor 列方便后续按置信度着色import numpy as np from alphafold.common import protein, residue_constants from alphafold.relax import relax plddt result[plddt] b_factors np.repeat(plddt[:, None], residue_constants.atom_type_num, axis-1) prot protein.from_prediction( featuresprocessed, resultresult, b_factorsb_factors, remove_leading_feature_dimensionFalse) relaxer relax.AmberRelaxation(max_iterations0, tolerance2.39, stiffness10.0, max_outer_iterations3, use_gpuFalse) pdb_text, _, _ relaxer.process(protprot) # 返回松弛后 PDB 文本 open(relaxed.pdb, w).write(pdb_text)不松弛的版本用protein.to_pdb(prot)直接输出差异只是没经过能量最小化。结果验证怎么读 pLDDT 和 PTMpredict返回的字典里已经算好了三项指标plddt逐残基局部置信度0-100。经验阈值80 以上大概率正确50-80 骨架基本准确50 以下多为无序区。ptm全局置信度0-1 的预测 TM-score。单体模式下ranking_confidence就是 plddt 的均值用 5 个集成模型跑完挑均值最高的即可。predicted_aligned_error残基对的 PAE 矩阵判断相对位置是否可靠。交叉验证的办法取一个已知 PDB 结构的蛋白做预测把 pLDDT 曲线与和实验结构的局部 RMSD 对齐。高分区应落在低误差区若 pLDDT 高但 RMSD 大说明该模型对这类序列不可信。画出置信度曲线和 PAE 热图import matplotlib.pyplot as plt from alphafold.common import confidence pae confidence.compute_predicted_aligned_error( logitsresult[predicted_aligned_error][logits], breaksresult[predicted_aligned_error][breaks]) plt.figure(figsize(10, 4)) plt.plot(plddt) plt.xlabel(residue); plt.ylabel(pLDDT); plt.title(pLDDT profile) plt.figure(figsize(6, 6)) plt.imshow(pae[predicted_aligned_error], cmapviridis, vmin0, vmax30) plt.colorbar(labelPAE (A)) plt.tight_layout(); plt.show()pLDDT 曲线用来快速定位无序区PAE 热图的对角条带越窄相邻残基的相对位置越确定。避坑指南现象原因解决办法FileNotFoundError: params_model_1.npz模型权重没下载执行 scripts/download_alphafold_params.sh并把get_model_haiku_params的data_dir指向该目录More than one input sequence foundFASTA 含多条序列DataPipeline只处理单序列按链拆分文件分别跑MSA 搜索耗时数小时或报数据库文件不存在路径拼错或文件不完整逐条核对 5 组路径与下载脚本输出开发期改用db_presetreduced_dbs配 small BFD推理 OOM 或单序列跑数小时JAX 回落到 CPU或序列过长用jax.devices()确认 GPU 可见长序列分块预测后拼接结构出现键长键角异常未做松弛或该区域本身低置信先跑AmberRelaxation仍异常则对照 pLDDT低分区不要采信坐标速查表数据管道 alphafold/data/pipeline.py DataPipeline.process(input_fasta_path, msa_output_dir) 模型配置 alphafold/model/config.py model_config(model_1 ~ model_5) 模型权重 alphafold/model/data.py get_model_haiku_params(model_name, data_dir) 推理 alphafold/model/model.py RunModel.process_features / predict 结构输出 alphafold/common/protein.py from_prediction / to_pdb 结构松弛 alphafold/relax/relax.py AmberRelaxation.process(prot...) 置信度 alphafold/common/confidence.py compute_plddt / compute_predicted_aligned_error CLI 对照 run_alphafold.py 所有数据库路径与预设均为 flags主流程跑通后多聚体预测只需换用model_1_multimer_v3配置和对应的 multimer 数据管道接口形态不变。基于predict返回的字典可以进一步扩展突变效应分析或对接下游可视化工具。【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考