nvidia-bionemo/bionemo-agent-toolkit

rfd4-proteina-evaluate

Use when scoring existing RFD4-Proteina designs, aggregating metrics, adding custom metrics, or clustering diversity.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/nvidia-bionemo/bionemo-agent-toolkit --skill rfd4-proteina-evaluate

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

RFD4-Proteína Evaluate (post-hoc metrics + aggregation)

Purpose

Score structures that already exist on disk, without re-running generation. evaluate.py shares the exact same metrics stack and Hydra config as generation, so any metrics_tags or custom-metric config behaves identically inline and offline. The two things this skill exists to get right: (1) pick the right metric tags for the design task (and know which ones silently need the AF3 container), and (2) aggregate the parallel per-job CSVs into one table before you try to read results.

Run everything from the repository root (the directory containing .project-root). All arguments are Hydra `key=value`, never `--key value`.

Inline (during generation) vs post-hoc (this skill)

  • Inline — pass metrics_tags to generate.py; metrics run immediately

after each design and land in per_example_metrics.csv next to the CIFs. Best when you already know what you want measured. See rfd4-proteina-generate.

  • Post-hoc — this skill. Score a folder of CIFs you already generated, add

metrics you forgot to turn on, or re-score with different tags. Same config, same outputs.

Prerequisites

A configured model environment and existing design CIFs. Refolding additionally needs its selected oracle backend; diversity clustering needs FoldSeek.

Use the user-selected model checkout at RFPROTEINA_ROOT for model commands, configs, and upstream manuals. This catalog contains the skills, not that checkout. In helper examples, resolve open-models-skills/rfd4-proteina/<name>/... to its absolute installed path when the catalog and model checkout are separate.

Inputs

Required: the user's structure directory, metric tags, and output directory. Optional: task CSV, custom metric config, and clustering. Read thresholds from the config actually used, not an unrelated default.

Instructions

Step 1 — Run evaluate.py over a folder of structures

bash
rfd4-evaluate \
    inputs=/path/to/structures \
    metrics_tags='[design]' \
    out_dir=/path/to/eval_output
  • inputs — a directory scanned recursively for CIF-like files. Required.

To evaluate one structure, place it in a dedicated directory.

  • metrics_tags — a bracket-quoted Hydra list: '[design]',

'[unconditional_refolding]', or multiple, e.g. '[design, unconditional_refolding]'. Required (no default in configs/evaluate.yaml).

  • out_dir — required; evaluate.py has no run directory to derive one from.

Results go under out_dir/evaluation_metrics/.

  • task_csv=<csv> — optional; a CSV with designed_structure_path and task

columns when different structures need different tag/pass-criterion treatment. Otherwise every structure is scored the same way.

Design tags and refolding tags are separate namespaces — pass both families if you want both to run. See references/metrics.md for the full tag table and semantics.

Scheduler intent

For any batch run, read the selected scripts/.user_info_<cluster> and the launcher before constructing the command. Preserve the user's partition, account, QoS/priority options, GPU request, runtime, memory, and CPU settings. Use a resource override only when the user explicitly requested it. State the resolved scheduler values before submission; use dry-run or non-submitting tests when validating the workflow.

Step 2 — Aggregate across parallel jobs

Large evaluations split across SLURM array jobs; each job writes its own per_example_metrics_job{N}.csv. After all jobs finish, concatenate:

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

The metrics directory is the first positional argument. This concatenates the per-example job CSVs, writes aggregated_metrics.csv and per_task_metrics.csv, and moves the individual job files into individual_job_results/. Aggregation moves those source CSVs and can replace existing aggregate outputs. Preserve prior results before repeating it; use a fresh --output_dir for a separate aggregate (source CSVs are still moved). Flags: --output_dir <dir> to write elsewhere, --cluster_with_foldseek for diversity clustering (Step 3). With scripts/launch_evaluate.sh (or launch_generate.sh) this aggregation runs automatically as a dependent SLURM job — foldseek on by default; disable with --no-foldseek.

Step 3 — FoldSeek diversity clustering (optional)

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

Adds a foldseek_cluster_id column so you can count structurally distinct designs per task. Clustering is scoped to the designed chain (the chain_of_interest, identified from conditioning annotations and stored in the metrics CSV) at a TM-score threshold of 0.5. FOLDSEEK_EXEC in the active environment must point at the FoldSeek executable. Post-hoc evaluate.py writes the designed-chain CIFs that its aggregation step needs. Generation-time aggregation instead requires save_chain_of_interest=true so generation writes those chain CIFs.

Step 4 — Custom metrics (no tracked-file edits)

Both custom-metric directories are git-ignored, so nothing you add here is ever committed:

  • src/rfproteina/metrics/custom_metrics/ — your Python Metric subclasses.
  • configs/metrics/custom_metrics/all_custom_metrics.yaml — Hydra registration

(scaffolded by setup.sh on first run; # @package metrics).

They are picked up automatically (no extra flags), and results land in per_example_metrics.csv prefixed by the config key (e.g. residue_count.n_residues). Often you don't even need new Python — an existing ready-made-but-opt-in class (interface ddG, atom-pair distance constraints, charge complementarity, ...) just needs a few lines of YAML. See docs/workflow/custom-metrics.md and references/metrics.md.

The AF3-container caveat (read this)

Refolding metrics (refolded_backbone_rmsd, refolded_motif_*_rmsd, ...) and the refolding oracles (oracle, oracle_ppi, oracle_dna — the AF3 variants) run the AF3 structure predictor, which runs only inside an apptainer/docker container configured via the cluster env files. Plain (non-refolding) design metrics like [design] do not need a container. If you request a refolding tag without the container, those metrics silently do not run — you get no oracle columns and no error. Configure the container first (see rfd4-proteina-setup, RFD4-Proteína installation guide, or use scripts/launch_evaluate.sh ... which wires it in.

Metrics-tag reference

A compact table of the imported metric, oracle, pass-criterion, and filter entries, their categories and config paths, the tag semantics (required_tags_any / required_tags_all / prohibited_tags), and the opt-in classes is in references/metrics.md. The full source of truth is docs/workflow/metrics.md.

Outputs

FileWritten byContents
per_example_metrics.csv (or per_example_metrics_job{N}.csv)evaluate.py / generate.pyOne row per design; metric columns prefixed by config key
aggregated_metrics.csvaggregate_metricsAll per-example rows concatenated; adds foldseek_cluster_id with --cluster_with_foldseek
per_task_metrics.csvaggregate_metricsPer-task summary (pass rates, means, cluster counts)
individual_job_results/aggregate_metricsThe original per-job CSVs, moved aside

Troubleshooting

SymptomFix
No oracle / refolding columns, no errorRefolding needs the AF3 container — configure it or use launch_evaluate.sh; plain [design] metrics need no container
metrics_tags metric silently skippedTags are matched by set intersection; pass the exact tag string a metric declares (design vs refolding are separate namespaces)
foldseek clustering does nothingSet FOLDSEEK_EXEC; for generation-time aggregation also set save_chain_of_interest=true before generation
out_dir missing / config errorout_dir is mandatory for evaluate.py; there is no run dir to infer it from
Hydra "could not override" / arg ignoredUse key=value, not --key value; quote list values as metrics_tags='[design]'
Only job CSVs present, no aggregateRun python -m rfproteina.inference_utils.aggregate_metrics <metrics_dir> after all jobs finish

For deeper detail: metrics reference · docs/workflow/metrics.md · docs/workflow/custom-metrics.md · Evaluating Results.

Limitations

Missing refolding columns mean unmeasured results. Metric and pass-rate interpretations depend on the exact model revision, providers, and criteria configuration.

Examples

The Step 1 command scores existing CIFs with the design tag. Steps 2 and 3 show aggregation with and without FoldSeek; choose the requested operation and a fresh result destination.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
nvidia-bionemo
社区

msa-search-nim

Generate multiple sequence alignments (MSAs) for protein sequences using the ColabFold MSA-Search NIM. Use for homolog search, UniRef30/ColabFold env searches, A3M or FASTA alignments, paired MSA search for complexes, PDB70 structural templates, hosted NVIDIA API calls, or local Docker deployment. For local deployment, download the databases in parallel with aria2c and launch via NIMMODELNAME (the recommended default fast path, ~14 min vs over 80 min for the built-in downloader); a plain docker

安装量
2
GitHub Stars
488
最近更新
10月21日
nvidia-bionemo
社区

msa-structure-prediction-pipeline

NOTE: your protein sequence and the retrieved MSA alignment are transmitted to external NVIDIA-hosted APIs (health.api.nvidia.com) on every call. Use local NIM containers for confidential or proprietary sequences. Run a complete protein structure prediction pipeline using NVIDIA BioNeMo NIMs: search for MSA alignments with MSA-Search (ColabFold), then predict the structure with OpenFold3 using the retrieved alignments. Use this skill whenever the user wants to predict a protein structure with ma

安装量
2
GitHub Stars
488
最近更新
10月21日
nvidia-bionemo
社区

openfold3-nim

Use this skill for OpenFold3, NVIDIA's BioNeMo NIM microservice for biomolecular structure prediction. Invoke whenever the user mentions OpenFold3 or needs protein, protein-ligand, protein-DNA/RNA, or multi-chain complex prediction with the hosted NVIDIA API or local Docker NIM. Covers endpoint choice, auth, request payloads, output artifacts, confidence scores, and local container setup.

安装量
2
GitHub Stars
488
最近更新
10月21日
nvidia-bionemo
社区

protein-binder-design

Orchestrate an end-to-end de novo protein binder design campaign against a protein target by composing BioNeMo NIM skills. Use for binder design, minibinder design, de novo binders, RFdiffusion + ProteinMPNN + Boltz2/OpenFold3 pipelines, epitope/hotspot-targeted design, in-silico binder validation, and ranking designs by interface confidence.

安装量
2
GitHub Stars
488
最近更新
10月21日