
AlphaFold 报错排查速查8 个高频错误一次修好的完整指南【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold跑了一整夜结果等来一屏红字——这可能是你第一次运行 AlphaFold 的真实体验。别慌AlphaFold 的报错其实高度模式化超过一半的失败都集中在找不到文件和显存不够两件事上。这篇文章是一份AlphaFold 报错排查速查手册先给你一张覆盖装环境 → 备数据 → 跑模型 → 拿结果全生命周期的速查表让定位问题的时间从半小时压到三分钟后面每个报错拆成一个独立案例按报错 → 原因 → 步骤 → 验证的节奏走你可以直接跳到跟自己那行红字对得上的部分。全生命周期报错速查表#报错关键词可能原因对应案例适用场景01RESOURCE_EXHAUSTED/Out of memory显存不足长序列、多聚体模型案例 01跑长链或多聚体时02Could not find HHsearch database/Jackhmmer database数据库没下全或路径指错案例 02数据库首次配置03Could not find path to the jackhmmer binaryHMMER 等外部工具不在 PATH案例 03第一次跑通流程04pdb70_database_path must be set when running with模型预设与数据库参数不匹配案例 04单体/多聚体混用时05All FASTA paths must have a unique basename多个 FASTA 重名案例 05批量提交多个序列06Could not find CIFs in模板结构库mmCIF缺失案例 06模板检索阶段07Minimization failed after ... attemptsrelaxation 收敛失败案例 07最后一步卡住08输出目录缺ranked_0.pdb等文件运行中断或磁盘写满案例 08跑完却没结果上表覆盖了绝大多数场景。下面按案例展开——每条案例开头有一句什么时候会遇到不相关的直接跳过。案例 01GPU 爆内存怎么救AlphaFold OOM这条报错几乎都发生在长序列或--model_presetmultimer上多聚体 5 个模型各跑多个随机种子显存压力是单体的数倍。jaxlib.xla_extension.XlaRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate ...原因GPU 显存装不下模型张量加上 MSA 特征长序列和随机种子数量越多占用越大。步骤先确认单条序列能跑通临时改用--model_presetmonomer把问题从模型太重里剥离出来。减少单次显存需求多聚体时用--num_multimer_predictions_per_model2默认 5此参数仅对 multimer 生效数据库侧可用--db_presetreduced_dbs减小 MSA 输入。显存被其他进程占满时在启动前限制 JAX 预分配避免它一次性吃光显存import jax jax.config.update(jax_gpu_memory_limit, 0.85) # 只占 85% 显存给 relax/TF 留空间以上都不行就是硬件上限了AlphaFold 推荐至少 16GB 显存的 GPU批量任务建议换卡或错峰跑。验证重跑时nvidia-smi里显存峰值不超过 90% 且进程正常进入模板检索阶段说明修好了。案例 02数据库找不到AlphaFold 数据库下载这是备数据阶段最高频的报错通常是download_all_data.sh中途断过、解压不完整或--data_dir指到了错误的层级。ValueError: Could not find HHsearch database /path/to/pdb70/pdb70_hhm.ffindex原因报错里的路径是工具真实去找的位置说明该路径下没有对应的.ffindex/.ffdata文件——要么没下载要么文件名/层级不对。步骤 照着做就行用仓库自带的 一键下载脚本 补全bash scripts/download_all_data.sh /path/to/data_dir # 完整数据库约 400GB bash scripts/download_all_data.sh /path/to/data_dir reduced_dbs # 只想先跑通时注意--db_preset与目录必须对应reduced_dbs用small_bfd_database_pathfull_dbs用bfd_database_pathuniref30_database_path两者不能混。各数据库内部结构要完整以 PDB70 为例目录下应有pdb70_hhm.ffdata、pdb70_hhm.ffindex、pdb70_a3m.ffdata等成对文件。下载中断过的文件建议删掉重下不要依赖断点续传——ffdata 这类大文件截断后校验很容易出错。验证把速查表 02 里涉及的每个*_database_path都ls一遍.ffindex与.ffdata成对存在且大小正常即可重跑。案例 03依赖工具不在 PATH二进制缺失这条报错几乎都发生在第一次跑通流程时尤其是工具装在 conda 环境而 AlphaFold 主进程跑在 base 环境的情况。ValueError: Could not find path to the jackhmmer binary. Make sure it is installed on your system.原因run_alphafold.py启动时会用shutil.which()依次定位jackhmmer、hhblits、hhsearch、hmmsearch、hmmbuild、kalign六个二进制任何一个找不到就立刻抛错。步骤逐个确认安装情况which jackhmmer hhblits hhsearch hmmsearch hmmbuild kalign缺失的按 官方文档 的环境要求安装JackHMMER、HMMER、HH-suite、Kalign 四个来源。工具在、但不在当前进程 PATH 里时显式传参覆盖run_alphafold.py的同名 flag 会覆盖自动探测python run_alphafold.py \ --fasta_pathsinput.fasta --output_dirout --data_dir/data \ --jackhmmer_binary_path/opt/af/jackhmmer \ --hhblits_binary_path/opt/af/hhblits # 其余 4 个同理conda 用户最简单的办法是激活装了工具的同一个环境再启动省得逐个传路径。验证重跑后不再抛Could not find path日志里开始出现 JackHMMER/HHblits 的执行记录。案例 04模型预设与数据库不匹配切换--model_preset后最常踩的坑参数组合没有跟着预设一起换。ValueError: pdb70_database_path must be set when running with --model_presetmonomer.原因启动阶段有一个强制校验——monomer必须给pdb70_database_pathmultimer必须给pdb_seqres_database_path和uniprot_database_path而pdb70在多聚体模式下必须不传。报哪条就是哪组没对齐。步骤先确定你要跑哪边单体还是多聚体预设一次只选一个monomer/monomer_casp14/monomer_ptm/multimer。按预设补齐数据库参数# 单体 python run_alphafold.py --model_presetmonomer \ --pdb70_database_path/data/pdb70 ... # 多聚体注意pdb70 反而要去掉 python run_alphafold.py --model_presetmultimer \ --pdb_seqres_database_path/data/pdb_seqres \ --uniprot_database_path/data/uniprot ...同时检查--db_preset与 BFD/UniRef30 三件套是否成组出现见案例 02 第 2 步这两个 flag 是分开校验的错一组只报一组的错。改完参数后先空跑确认校验全过进入 MSA 阶段即算通过再启动长任务。验证进程顺利通过启动校验、日志出现数据库检索动作说明预设-参数对齐了。案例 05FASTA 文件名重复批量提交多个序列时最容易中招把几个sequence.fasta从不同目录丢进同一次命令。ValueError: All FASTA paths must have a unique basename.原因AlphaFold 用 FASTA 的文件名basename直接命名输出子目录重名意味着两个序列的结果会互相覆盖所以启动时就拒绝。步骤重命名输入文件保证每次提交的每个 FASTA 文件名全局唯一如1abc.fasta、2def.fasta。检查文件内容本身头行后是序列 ID下面紧跟氨基酸序列不要混入注释行或空格行。多链蛋白放在同一个FASTA 文件里、用多个头行区分链不要拆成多个文件再靠 flag 拼。提交前快速核对ls *.fasta里无重名再执行。验证输出目录下每个输入文件对应一个独立子目录且彼此内容不互相覆盖。案例 06模板结构库缺失多聚体或单体跑到模板检索阶段才炸往往说明只下了 MSA 数据库漏了 mmCIF 模板库。ValueError: Could not find CIFs in /path/to/template_mmcif_dir原因模板检索要求--template_mmcif_dir指向一个存有大量pdb_id.cif结构文件的目录目录为空或不存在就抛此错。步骤用 模板结构下载脚本 补数据bash scripts/download_pdb_mmcif.sh /path/to/mmcif_dir运行命令里--template_mmcif_dir指向该目录。确认目录里确实是*.cif文件而不是 zip 压缩包没解压。历史测试集如复现 CASP记得加--max_template_date截断模板发布时间避免用到未来结构造成信息泄露。验证目录内.cif文件数量在百万级量级且运行日志进入 MSA 对齐与模板特征化阶段。案例 07relaxation 收敛失败AlphaFold relaxation 错误这条几乎都发生在整条流程的最后一步——模型都预测完了结构在 OpenMM 里弛豫收敛不了。ValueError: Minimization failed after 100 attempts.原因relax 步骤用 OpenMM/Amber 对预测结构做立体化学优化部分预测存在无法在迭代预算内消解的冲突能量最小化反复失败。步骤先保结果再谈质量最快止血--models_to_relaxNONE跳过 relax保留原始预测可能有少量立体化学冲突但总比整单失败强只跑--models_to_relaxBEST默认也比ALL省得多。需要保留 relax 时微调 run_alphafold.py 顶部的弛豫常量按你的预算改RELAX_MAX_ITERATIONS 200 # 默认 0不限制可设上限防死磕 RELAX_ENERGY_TOLERANCE 5.0 # 默认 2.39放宽收敛标准 RELAX_STIFFNESS 5.0 # 默认 10.0降低约束刚度GPU relax 有兼容性问题时用--use_gpu_relax关闭回退到 CPU 弛豫慢但稳。检查输入是否含罕见氨基酸/修饰残基——RELAX_EXCLUDE_RESIDUES里排除掉问题残基能避开不少无效迭代。验证输出目录里relax_metrics.json正常生成relaxed版 PDB 与原始 PDB 并存。案例 08输出文件不完整跑完了却没有 ranked_0.pdb——这类问题不是模型问题而是进程没真正跑完。# 现象输出目录里只有 log 和部分 json缺少 ranked_0.pdb / plddt 文件原因三类典型诱因——进程被 OOM killer 杀掉、磁盘写满、输出目录残留上次失败的中间状态。步骤翻run.log末尾找Killed、异常堆栈或中断信号确定死因而不是猜。磁盘空间核查df -h看数据盘和输出盘大蛋白单条输出可到数百 MB。换一个全新的空--output_dir重跑避免与上次残留文件混淆。如果死因是显存不足回到案例 01 的降配方案再跑。验证输出目录里ranked_0.pdb、plddt_{model}.txt、metrics.json三类文件齐全且 PDB 可正常打开。从报错到修复排查路径图仍然解决不了怎么办带着报错首行去翻仓库的 README 和 文档大部分边界情况都有对应说明。用报错的完整原句含路径去官方 issue 区搜关键词加引号命中率远高于截断的半句话。复现步骤尽量按命令 预设 序列长度三要素描述社区帮你定位的速度会快很多。报错不是终点只是流程在提醒你哪一步的契约没对上——把速查表贴在手边逐个案例核对红字总会变成绿色的ranked_0.pdb。【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考