用 5 段代码跑通 AlphaFold 蛋白质结构预测

发布时间:2026/9/11 16:53:51
用 5 段代码跑通 AlphaFold 蛋白质结构预测 用 5 段代码跑通 AlphaFold 蛋白质结构预测【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafoldjackhmmer 跑完MSA 落了一目录手里是一坨看着像 numpy 数组的 feature dict。模型吃的张量不是 PDB 文件吐出来的置信度也不是人直接能读的结论。这篇文章用 AlphaFold Python API蛋白质结构预测编程调用的主入口5 段代码把序列到坐标的路径走一遍。30 秒判断它能干什么、不能干什么API 就一条主干序列进去三维坐标出来置信度随行。它不做一键云——二进制、数据库、显存、磁盘都自备。建立信任的最快方式是用最小配置先验证一遍haiku 参数加 reduced_dbs单张 24G 卡就能端到端确认路径再上生产。条目情况能干什么单链与 multimer 复合物结构预测附 pLDDT每残基置信度、PAE 矩阵松弛后出 PDB不能干什么没有内置数据库下载和云队列约 2.2TB 数据与显存自备GPU单链单体 24G 够multimer 复合物 80G 起步前置条件jackhmmer / hhblits / hhsearch / kalign 四个二进制 UniRef90、MGNIFY、BFD 等数据库最快验证haiku轻量参数 db_presetreduced_dbs单卡跑通全流程主干走向写 FASTA → DataPipeline 搜 MSA 出 feature dict → RunModel 出张量 → 装回原子坐标 → Amber 松弛修好几何落盘 PDB。上面这张就是整条路走完后的样子。从序列到坐标把整条主线走通主线四个站点写 FASTA、喂管道、拿张量、变回 PDB。下面全是单链示例复合物放在段尾。 先把序列写成 FASTA 并搭好数据管道——MSA多序列比对同源序列列对齐搜索全由它代办这一步是全程最耗时的import shutil from alphafold.data import pipeline, templates from alphafold.data.tools import hhsearch seq MAAHKGAEHHHKAAEHHEQAAKHHHAAAEHHEKGEHEQAAHHADTAYAHHKHAEEHAAQAAKHDAEHHAPKPH with open(query.fasta, w) as f: f.write(query\n seq) dp pipeline.DataPipeline( jackhmmer_binary_pathshutil.which(jackhmmer), hhblits_binary_pathshutil.which(hhblits), uniref90_database_pathf{data_dir}/uniref90/uniref90.fasta, mgnify_database_pathf{data_dir}/mgnify/mgy_clusters_2022_05.fasta, # bfd / uniref30 / pdb70 路径同构省略 template_searcherhhsearch.HHSearch( binary_pathshutil.which(hhsearch), databases[f{data_dir}/pdb70/pdb70]), template_featurizertemplates.HhsearchHitFeaturizer( mmcif_dirf{data_dir}/pdb_mmcif/mmcif_files, max_template_date2021-12-01, max_hits20, kalign_binary_pathshutil.which(kalign))) feat dp.process(input_fasta_pathquery.fasta, msa_output_dirmsas)管道构造逻辑在alphafold/data/pipeline.py。feat就是 feature dict模型直接吃的 numpy 数组字典aatype one-hot、MSA、deletion matrix、模板全在一个字典里。拿到 feature dict 之后搭模型运行器、按预测键。模型加载逻辑在alphafold/model/model.py的RunModel里配置和参数各给一份from alphafold.model import model, config, data cfg config.model_config(model_1) # haiku 参数体积小专用于验证管线生产换成真实 params 文件 params data.get_model_haiku_params(model_1, data_dir) runner model.RunModel(cfg, params) proc runner.process_features(feat, random_seed42) out runner.predict(proc, random_seed42)out是大家要追的东西predicted_lddt逐残基局部置信度、predicted_aligned_errorPAE预测对齐误差任意残基对之间相对方位的置信矩阵、structure_module最终原子坐标。此刻还是张量字典变回 PDB 只差一步。 坐标和置信度都在out里最后一步是装回蛋白质对象import numpy as np from alphafold.common import protein, residue_constants plddt out[plddt] # 置信度写进 PDB 的 B 因子列下游工具可直接按残基读可信度 b np.repeat(plddt[:, None], residue_constants.atom_type_num, axis-1) prot protein.from_prediction( featuresproc, resultout, b_factorsb, remove_leading_feature_dimensionFalse)装填逻辑在alphafold/common/protein.py的from_prediction它从structure_module取坐标包成 Protein 对象protein.to_pdb(prot)随时能拿 PDB 字符串。⚡ 但 PDB 先别急着存网络输出可能有键角和位阻问题要再过一道分子力学打磨——Amber 松弛alphafold/relax/relax.py的AmberRelaxation把结构拉回物理合理的构象并补上氢原子from alphafold.relax import relax relaxer relax.AmberRelaxation( max_iterations0, tolerance2.39, stiffness10.0, exclude_residues[], max_outer_iterations3, use_gpuTrue) pdb, _, _ relaxer.process(protprot) with open(model_1_relaxed.pdb, w) as f: f.write(pdb)跑完松弛文件就落盘了单链主线结束。multimer 复合物只换三处数据管道换成pipeline_multimer.DataPipeline多要一个 UniProt 库模型名换成model_1_multimer后面流程原样。显存差距记得留24G 是单链的复合物 80G 起步。至此无命令行结构预测全程在 Python 内完成二进制只是被管道当工具调。这个结构能不能信判读 pLDDT 与 PAE 矩阵 先把张量矩阵变成两个能直接看的数组函数在alphafold/common/confidence.pyfrom alphafold.common import confidence raw_plddt confidence.compute_plddt(out[predicted_lddt][logits]) pae confidence.compute_predicted_aligned_error( logitsout[predicted_aligned_error][logits], breaksout[predicted_aligned_error][breaks])[predicted_aligned_error]raw_plddt长度等于残基数pae是残基数 × 残基数不想重算的话out[plddt]里就是同一结果。pLDDT逐残基局部置信度0-100判读是三档硬标准80局部结构可信二级结构走向、侧链朝向基本不出错可直接拿去做对接设计70-80中等可靠骨架走向对侧链细节要抽查50基本无序多为 linker 或 loop坐标别信只当锚点。PAE 矩阵是二维版域内块低、跨域块高说明域内取向可信两个域之间的相对朝向不可信。multimer 复合物看 PAE 比看 pLDDT 更要紧先盯链间块再决定界面能不能用。这是 CASP14 留下的结果蓝是网络预测绿是实验结构两者几乎叠在一起——但那是置信度先查过之后的事流程和上文一致。往下还能接什么预测做完之后MD 模拟松弛后 PDB 直接喂 GROMACS 或 Amber平衡加生产轨迹验证结构是不是稳定的能量极小。突变效应评估换掉一个残基重跑主线对比该位置 pLDDT 落差量化突变对局部结构的冲击。反向设计固定骨架把结构交给序列生成工具反推序列做从头设计。三个容易卡住的点现象、根因、绕过方式显存爆掉现象predict在 24G 卡上 OOMJAX 直接报 out of memory根因默认配置 num_ensemble5、num_recycles3显存随序列长度平方级涨绕过单体先跑紧张时调小 num_ensemble复合物挪到 80G 卡数据库体积现象全量库 2.2TB磁盘和时间都顶不住根因full_dbs含 MGNIFY 全量体积大头在这绕过run_alphafold.py里db_presetreduced_dbs切小库或先用 haiku 参数验证管线MSA 耗时现象单条序列 MSA 搜索几十分钟批量蛋白预测看着像卡死根因jackhmmer 迭代检索大库本来就慢不是挂死绕过MSA 已有现成时传use_precomputed_msasTrue跳过检索只跑模型段那坨 MSA 跑完的 feature dict 再到手时路径已经平了喂管道、拿张量、变回 PDB能不能信写在 pLDDT 和 PAE 里。明早先干一件事用 haiku 参数加 reduced_dbs 把整条主线端到端验一遍通了再换真实参数上生产。【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考