拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AlphaFold API实战:从一条序列到PDB的蛋白质结构预测

AlphaFold API实战从一条序列到PDB的蛋白质结构预测【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold给一条氨基酸序列怎么让它直接吐出原子级精度的 PDB 结构文件而不用拼一堆命令行 flag本文带你用 AlphaFold 的 Python API 跑通完整的蛋白质结构预测链路——从序列到 MSA、前向推理、再松弛精修几十行代码全程不用碰命令行。Quick Win十几行代码先拿到 PDB先看全链路的最短骨架。假设数据管道已经建好下面细讲核心就四步from alphafold.data import pipeline # 序列 - 特征 from alphafold.model import model, config, data from alphafold.common import protein, residue_constants import numpy as np # 1. 构建模型配置 参数文件 runner model.RunModel(config.model_config(model_1), data.get_model_haiku_params(model_namemodel_1, data_dirdata)) # 2. 特征进模型features 来自 DataPipeline processed runner.process_features(features, random_seed42) result runner.predict(processed, random_seed42) # 3. 坐标 pLDDT - PDB 字符串 pdb_str protein.to_pdb(protein.from_prediction( processed, result, b_factorsnp.repeat(result[plddt][:, None], residue_constants.atom_type_num, axis-1), remove_leading_feature_dimensionTrue)) # 单体模型传 True这几行做的事构建一个RunModel把数据管道产出的特征喂进去做一次前向推理再用protein.from_prediction把结果字典变成Protein对象最后序列化成 PDB 字符串。跑通这一步你就拥有了一条完整的蛋白质结构预测能力。架构速览五个模块各管一摊整个仓库的分工很清晰五个核心模块各司其职推理引擎——alphafold/model/model.pyRunModel类加载参数文件并执行完整前向预测数据管道——alphafold/data/pipeline.pyDataPipeline类跑对齐工具把 FASTA 序列变成模型输入特征结构松弛——alphafold/relax/relax.pyAmberRelaxation类用 Amber 力场修正预测结构的立体化学冲突置信度指标——alphafold/common/confidence.py把模型原始输出换算成 pLDDT / PAE 评分命令行参考——run_alphafold.py官方脚本的完整编排照着它改就能当 API 手册用DataPipeline 其实就是一条工厂流水线jackhmmer 是原料初筛工位在 UniRef90 / MGnify 里快速捞出同源序列hhblits 是深挖工位去 BFD 数据库里把更远缘的同源再挖出来。两个工位流水作业MSA多序列比对就组装好了。提示完整数据库UniRef90、MGnify、BFD 等加起来约 2.2TB仓库提供了scripts/download_all_data.sh一键下载资源有限时可用reduced_dbs预设把 BFD 换成小版本。端到端工作流AlphaFold Python API 蛋白质结构预测全链路序列进、特征出模型不认识 FASTA它需要一张 MSA 矩阵加若干模板结构。这一步就是让数据管道把外部对齐工具都调度起来。构造DataPipeline时要显式传六个工具的可执行路径这是新手最容易卡住的地方import shutil from alphafold.data import pipeline from alphafold.data import templates from alphafold.data.tools import hhsearch data_pipeline pipeline.DataPipeline( jackhmmer_binary_pathshutil.which(jackhmmer), hhblits_binary_pathshutil.which(hhblits), uniref90_database_pathdata/uniref90/uniref90.fasta, mgnify_database_pathdata/mgnify/mgy_clusters_2022_05.fasta, bfd_database_pathdata/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt, small_bfd_database_pathdata/small_bfd/small_bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt, uniref30_database_pathdata/uniref30/UniRef30_2021_03, template_searcherhhsearch.HHSearch( binary_pathshutil.which(hhsearch), databases[data/pdb70/pdb70]), template_featurizertemplates.HhsearchHitFeaturizer( mmcif_dirdata/pdb_mmcif/mmcif_files, max_template_date2021-12-01, # 复现历史基准时设截止日期 max_hits20, kalign_binary_pathshutil.which(kalign)), use_small_bfdFalse) features data_pipeline.process(input.fasta, msa_output)注意use_small_bfd与两个 BFD 路径是联动的传True就走 small BFD数据库体积能小一个量级。跑完processfeatures里就是一个 NumPy 数组字典MSA 中间文件落在msa_output目录里。喂给模型拿到坐标特征有了接下来加载模型参数做前向推理。config.model_config给出网络结构data.get_model_haiku_params从磁盘读训练好的参数两者合成一个RunModelfrom alphafold.model import model, config, data model_name model_1 # monomer 预设下有 model_1 ~ model_5 runner model.RunModel( config.model_config(model_name), data.get_model_haiku_params(model_namemodel_name, data_dirdata)) processed runner.process_features(features, random_seed42) result runner.predict(processed, random_seed42) print(result[plddt]) # 每残基置信度 0-100越高越可信最关键的坑在这里predict返回的字典里装的是 JAX 数组不能直接 pickle 落盘官方脚本会先递归转成 NumPy 再存。另外process_features和predict要共用同一个random_seed否则结果难以复现。坐标变 PDB置信度落盘拿到结果字典后protein.from_prediction负责把坐标、序列、链信息组装成Protein对象。pLDDT 会写进 B 因子列方便你在任何可视化软件里按置信度着色import numpy as np from alphafold.common import protein, confidence, residue_constants plddt result[plddt] unrelaxed protein.from_prediction( processed, result, b_factorsnp.repeat(plddt[:, None], residue_constants.atom_type_num, axis-1), remove_leading_feature_dimensionTrue) # 单体模型传 True with open(unrelaxed.pdb, w) as f: f.write(protein.to_pdb(unrelaxed)) # PAE残基对之间的预测对齐误差判断哪个区域和哪个区域靠得住 pae confidence.compute_predicted_aligned_error( logitsresult[predicted_aligned_error][logits], breaksresult[predicted_aligned_error][breaks])提示from_prediction的remove_leading_feature_dimension参数单体和多聚体取值相反——单体传True多聚体传False传错会直接报维度不匹配。结构松弛力场精修最后一步神经网络吐出的坐标难免有范德华冲突直接拿去建模不够体面。AmberRelaxation用 Amber 力场做约束最小化把结构捏到化学上合理from alphafold.relax import relax relaxer relax.AmberRelaxation( max_iterations0, # 0 表示不设上限跑到收敛 tolerance2.39, # L-BFGS 能量容差 kcal/mol stiffness10.0, # 重原子约束弹簧常数 exclude_residues[], max_outer_iterations3, # 官方默认 3越大越稳但越慢 use_gpuTrue) # 有卡就开着快很多 relaxed_pdb, metrics, violations relaxer.process(protunrelaxed) with open(relaxed.pdb, w) as f: f.write(relaxed_pdb)跑完relaxed.pdb才是最终交付物violations里还剩什么冲突一目了然调试结构问题时先看它。效率倍增批量、GPU 加速与置信度可视化 ⚡批量预测一批序列——场景手头有几百条 FASTA。做法模型构建只发生一次DataPipeline和RunModel都复用循环里只做 process predictimport glob, pathlib for fasta in sorted(glob.glob(inputs/*.fasta)): stem pathlib.Path(fasta).stem feats data_pipeline.process(fasta, fmsa_out/{stem}) r runner.predict(runner.process_features(feats, random_seed42), random_seed42) # 对每个 r 重复上面的 PDB 导出逻辑GPU 加速——推理侧 JAX 装 CUDA 版即自动用卡无需改代码松弛侧把use_gpuTrue打开max_outer_iterations保持 3 即可两者配合能省掉大部分墙钟时间。画 pLDDT 曲线和 PAE 热图——场景给结果配图汇报。pLDDT 看局部PAE 看残基对之间import matplotlib.pyplot as plt plt.figure(figsize(10, 4)) plt.plot(plddt, markero, ms3) plt.xlabel(Residue); plt.ylabel(pLDDT) plt.title(AlphaFold pLDDT 蛋白质结构预测置信度) plt.show() plt.figure(figsize(8, 8)) plt.imshow(pae[predicted_aligned_error], cmapviridis, interpolationnearest) plt.colorbar(labelPAE (Å)) plt.show()踩坑实录五个高频问题 构造管道就报Could not find jackhmmer症状shutil.which返回 None管道构建直接崩 根因API 不会自动搜 PATH工具路径全靠你显式传 解法先激活装了 HMMER 的 conda 环境或传绝对路径predict 阶段显存爆炸症状长序列预测到一半 OOM 根因full 数据库的 MSA 序列数太多输入矩阵巨大 解法use_small_bfdTrue切 reduced_dbs 预设先跑通再放大同一条序列两次结果对不上症状重跑后坐标有细微差异 根因random_seed没固定或两次只固定了 predict 忘了 process_features 解法两处传同一个固定值JAX 版本也要一致松弛一步挂几个小时症状max_outer_iterations调大后慢到怀疑人生 根因外层违规修复循环每轮都是完整力场最小化 解法回到官方默认 3或先看 unrelaxed 结果再决定要不要精修想复用 MSA 却被重新算了一遍症状use_precomputed_msasTrue没生效 根因MSA 文件按msa_output_dir查找目录变了就找不到 解法多次运行保持msa_output_dir完全一致下一步 接入分子动力学做长时间尺度验证用 multimer 模型预测蛋白质复合物扩展做单点突变对结构的影响分析延伸资料notebooks/AlphaFold.ipynb 官方 Notebook 有完整的可视化示例docs/technical_note_v2.3.0.md 技术笔记讲清了每个模块的设计动机。打开终端把你第一条序列丢进去看看 AlphaFold 会给你吐出什么结构。【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门