SuperAPI AI 工具集

rfd4-proteina-evaluate

智能体与模型

查看项目

更新于 10-21 19:20

技能介绍

用途

RFD4-Proteína Evaluate 用于对已经存在于磁盘上的蛋白质设计结构进行事后(post-hoc)打分,而无需重新运行生成流程。evaluate.py 与生成阶段共享完全相同的指标栈和 Hydra 配置,因此任何 metrics_tags 或自定义指标配置在在线(生成时)和离线(事后)场景下行为一致。该技能重点解决两件事:一是为设计任务选择正确的指标标签,并了解哪些标签会静默依赖 AF3 容器;二是在读取结果之前,将并行的逐作业 CSV 聚合为一张表。

所有命令都从仓库根目录(包含 .project-root 的目录)运行。所有参数均为 Hydra 的 key=value 形式,而非 --key value。

在线与事后评估的区别

  • 在线(生成期间):向 generate.py 传入 metrics_tags,指标在每个设计完成后立即运行,并写入 CIF 旁边的 per_example_metrics.csv。适合已经明确要测量什么的情况。参见 rfd4-proteina-generate。
  • 事后(本技能):对已生成的 CIF 文件夹打分,补上忘记开启的指标,或用不同标签重新打分。配置相同,输出相同。

前置条件

需要已配置的模型环境和已有的设计 CIF 文件。重折叠(refolding)还需要其选定的 oracle 后端;多样性聚类需要 FoldSeek。

模型命令、配置和上游手册使用用户在 RFPROTEINA_ROOT 处选定的模型检出(checkout)。本目录包含的是技能,而非该检出。在辅助示例中,当目录与模型检出分离时,需将 open-models-skills/rfd4-proteina/<name>/... 解析为其绝对安装路径。

输入

必需:用户的结构目录、指标标签、输出目录。可选:任务 CSV、自定义指标配置、聚类。阈值应读取实际使用的配置,而非无关的默认值。

使用方式

第 1 步 — 对结构文件夹运行 evaluate.py

rfd4-evaluate \
    inputs=/path/to/structures \
    metrics_tags='[design]' \
    out_dir=/path/to/eval_output
  • inputs:递归扫描 CIF 类文件的目录。必需。要评估单个结构,请将其放入专用目录。
  • metrics_tags:方括号引用的 Hydra 列表,如 '[design]'、'[unconditional_refolding]',或多个,如 '[design, unconditional_refolding]'。必需(configs/evaluate.yaml 中无默认值)。
  • out_dir:必需;evaluate.py 没有可推导的运行目录。结果写入 out_dir/evaluation_metrics/。
  • task_csv=<csv>:可选;当不同结构需要不同的标签/通过标准处理时,提供包含 designed_structure_path 和 task 列的 CSV。否则所有结构以相同方式打分。

设计标签与重折叠标签是独立的命名空间——若希望两者都运行,需同时传入两个系列。完整标签表和语义见 references/metrics.md。

调度器意图

对于任何批处理运行,在构造命令前先阅读选定的 scripts/.user_info_<cluster> 和启动器。保留用户的分区、账户、QoS/优先级选项、GPU 请求、运行时间、内存和 CPU 设置。仅在用户明确要求时使用资源覆盖。提交前说明解析后的调度器值;验证工作流时使用 dry-run 或不提交的测试。

第 2 步 — 跨并行作业聚合

大型评估会拆分为 SLURM 数组作业;每个作业写入自己的 per_example_metrics_job{N}.csv。所有作业完成后,执行:

python -m rfproteina.inference_utils.aggregate_metrics /path/to/eval_output/evaluation_metrics/

指标目录是第一个位置参数。该命令拼接逐样本作业 CSV,写入 aggregated_metrics.csv 和 per_task_metrics.csv,并将各作业文件移入 individual_job_results/。聚合会移动这些源 CSV,并可能替换已有的聚合输出。重复执行前请保留先前结果;使用新的 --output_dir 生成单独的聚合(源 CSV 仍会被移动)。标志:--output_dir <dir> 写入其他位置,--cluster_with_foldseek 进行多样性聚类(第 3 步)。使用 scripts/launch_evaluate.sh(或 launch_generate.sh)时,该聚合会作为依赖的 SLURM 作业自动运行——默认开启 foldseek;用 --no-foldseek 禁用。

第 3 步 — FoldSeek 多样性聚类(可选)

python -m rfproteina.inference_utils.aggregate_metrics /path/to/eval_output/evaluation_metrics/ \
    --cluster_with_foldseek

添加 foldseek_cluster_id 列,以便按任务统计结构上不同的设计数量。聚类范围限定为设计链(chain_of_interest,从条件注释中识别并存储在指标 CSV 中),TM-score 阈值为 0.5。活动环境中的 FOLDSEEK_EXEC 必须指向 FoldSeek 可执行文件。事后 evaluate.py 会写入其聚合步骤所需的设计链 CIF。生成时聚合则要求 save_chain_of_interest=true,以便生成过程写入这些链 CIF。

第 4 步 — 自定义指标(不编辑受跟踪文件)

两个自定义指标目录均被 git 忽略,因此在此添加的内容永远不会被提交:

  • src/rfproteina/metrics/custom_metrics/ — 你的 Python Metric 子类。
  • configs/metrics/custom_metrics/all_custom_metrics.yaml — Hydra 注册(首次运行时由 setup.sh 生成脚手架;# @package metrics)。

它们会被自动识别(无需额外标志),结果写入 per_example_metrics.csv,并以配置键为前缀(例如 residue_count.n_residues)。通常甚至不需要新的 Python——一个现成但需选择启用的类(界面 ddG、原子对距离约束、电荷互补性等)只需几行 YAML。参见 docs/workflow/custom-metrics.md 和 references/metrics.md。

AF3 容器注意事项

重折叠指标(refolded_backbone_rmsd、refolded_motif_*_rmsd 等)和重折叠 oracle(oracle、oracle_ppi、oracle_dna——AF3 变体)会运行 AF3 结构预测器,而后者仅在通过集群环境文件配置的 apptainer/docker 容器内运行。普通(非重折叠)设计指标如 [design] 不需要容器。如果在没有容器的情况下请求重折叠标签,这些指标会静默不运行——你不会得到 oracle 列,也不会报错。请先配置容器(参见 rfd4-proteina-setup、RFD4-Proteína 安装指南),或使用 scripts/launch_evaluate.sh ...,它会自动接入容器。

指标标签参考

导入的指标、oracle、通过标准和过滤器条目,其类别与配置路径,标签语义(required_tags_any / required_tags_all / prohibited_tags),以及需选择启用的类,均以紧凑表格形式列于 references/metrics.md。完整权威来源是 docs/workflow/metrics.md。

输出

文件 写入者 内容
per_example_metrics.csv(或 per_example_metrics_job{N}.csv) evaluate.py / generate.py 每个设计一行;指标列以配置键为前缀
aggregated_metrics.csv aggregate_metrics 所有逐样本行拼接;使用 --cluster_with_foldseek 时添加 foldseek_cluster_id
per_task_metrics.csv aggregate_metrics 按任务汇总(通过率、均值、聚类数)
individual_job_results/ aggregate_metrics 原始逐作业 CSV,被移入此处

故障排除

症状 修复
无 oracle / 重折叠列,也无错误 重折叠需要 AF3 容器——配置它或使用 launch_evaluate.sh;普通 [design] 指标不需要容器
metrics_tags 指标被静默跳过 标签按集合交集匹配;传入指标声明的确切标签字符串(design 与 refolding 是独立命名空间)
foldseek 聚类无效果 设置 FOLDSEEK_EXEC;生成时聚合还需在生成前设置 save_chain_of_interest=true
out_dir 缺失 / 配置错误 out_dir 对 evaluate.py 是强制的;没有可推断的运行目录
Hydra "could not override" / 参数被忽略 使用 key=value,而非 --key value;列表值加引号,如 metrics_tags='[design]'
只有作业 CSV,没有聚合 所有作业完成后运行 python -m rfproteina.inference_utils.aggregate_metrics <metrics_dir>

更深入细节:指标参考 · docs/workflow/metrics.md · docs/workflow/custom-metrics.md · Evaluating Results。

限制

缺少重折叠列意味着结果未被测量。指标和通过率的解释取决于确切的模型修订版、提供者和标准配置。

示例

第 1 步命令使用 design 标签对已有 CIF 打分。第 2 步和第 3 步展示了带与不带 FoldSeek 的聚合;请选择所请求的操作和全新的结果目标位置。