Generated banner for Complexa Evaluate Pdbs
Generated logo for Complexa Evaluate Pdbs

Complexa Evaluate Pdbs

NVIDIAOfficialPublished by NVIDIA

  • Skill
  • Workflow
  • Science and research
  • Apache-2.0
  • Medium risk
  • Has scripts

From the author

Agent runbook for evaluating an existing PDB directory through the separately installed first-party Proteina-Complexa CLI. Use to refold or score designs, compute interface pAE, i_pLDDT, scRMSD, motif RMSD, or designability, run complexa analysis, or assess third-party BindCraft, AlphaProteo, or RFdiffusion outputs. SKILL.md selects and invokes the evaluation configuration; bundled executables only inspect local readiness and write a run manifest.
— the description by NVIDIA

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The complexa-evaluate-pdbs skill provides a structured workflow to evaluate directories of pre-existing PDB files. It utilizes the Proteina-Complexa CLI to perform refolding and metric computation, including interface pAE, i_pLDDT, scRMSD, and designability scores. The skill supports various design types such as protein binders, ligand binders, and AME (motif-ligand) designs, allowing users to assess outputs from third-party tools like BindCraft, AlphaProteo, or RFdiffusion. It handles the full evaluation pipeline from pre-flight environment checks to final manifest generation.

What it does

  • Refolds PDB files using backends like AF2, RF3, ESMFold, or Boltz2.
  • Computes interface metrics including i_pAE, i_pTM, pLDDT, and scRMSD.
  • Assesses monomer and codesignability through ProteinMPNN-based redesign.
  • Calculates motif-specific metrics such as motif RMSD and sequence recovery.
  • Aggregates results into CSV summaries with pass-rate analysis based on defined thresholds.
  • Generates a run manifest to track configurations, git SHAs, and output paths for reproducibility.

When to use it

  • When you need to evaluate a directory of pre-existing PDB designs.
  • When assessing the quality of third-party protein binder or ligand binder outputs.
  • When performing motif-aware evaluation for enzyme or AME designs.
  • When you need to generate standardized pass-rate reports for a set of protein structures.

Advantages

  • Automates the complex evaluation-to-analysis pipeline for protein designs.
  • Supports multiple folding backends and design types within a unified configuration framework.
  • Provides standardized metrics and success thresholds for consistent result interpretation.
  • Includes pre-flight checks to ensure hardware and environment readiness before execution.

Usage examples

“Evaluate my protein binder PDBs in /data/designs using AF2.”
The agent runs the pre-flight check, then executes the complexa analysis command with the protein_binder configuration and colabdesign backend.
“Score these ligand binder designs in /data/ligands.”
The agent identifies the ligand_binder type, configures the RF3 folding backend, and runs the evaluation and analysis steps.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/complexa-evaluate-pdbs/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip complexa-evaluate-pdbs.zip -d .agents/skills

Documentation by NVIDIA

Complexa Evaluate-PDBs Skill

Score a directory of pre-existing PDB files against the same metrics Proteina-Complexa uses internally. Wraps complexa analysis <evaluate_config> ++sample_storage_path=<dir>: the CLI runs the evaluate step (refold + interface metrics + monomer metrics) and then the analyze step (success thresholds, diversity, pass-rate CSVs). Do not run complexa generate here — the inputs already exist.

What this skill enables

  • Re-fold a directory of designed PDBs with AF2 (colabdesign), RF3 (rf3_latest), ESMFold (esmfold), or Boltz2 (boltz2_default).

  • Compute binder interface metrics: i_pAE, min_ipAE, i_pTM, pLDDT, binder/complex scRMSD.

  • Compute monomer designability (ProteinMPNN-redesigned scRMSD) and codesignability (original sequence refold scRMSD).

  • For motif inputs: motif RMSD (CA + all-atom), motif-region designability/codesignability, sequence recovery.

  • Aggregate into per-PDB CSVs plus pass-rate summaries using the default thresholds for the result_type.

Step 1: Pre-flight

Always check GPU / disk / tool binaries before launching a refold job. RF3 and ColabDesign-AF2 are large.

bash scripts/preflight.sh

Surface from preflight.json:

  • gpu.available and gpu.vram_gb — colabdesign/RF3 need ≥40 GB; ESMFold tolerates ≥24 GB.

  • env.missing_required — must include the keys for the chosen folding backend:

    • colabdesign → AF2_DIR

    • rf3_latest → RF3_CKPT_PATH, RF3_EXEC_PATH

    • esmfold → ESMFold weights resolvable

  • tools.{foldseek,mmseqs} — required by aggregation.compute_diversity / compute_mmseqs_diversity (both default true).

If any required key is missing, route the user to the complexa-setup skill.

Step 2: Identify the design type

Like complexa design, evaluation has one default flow (protein binder) and two extensions (ligand binder, AME). The evaluate config you pass to complexa analysis decides everything else (which metrics, which refolder defaults, which thresholds the analyze step applies).

Default — protein binder
complexa analysis configs/evaluate_from_pdb_dir.yaml \
    ++sample_storage_path=/abs/path/to/pdbs \
    ++dataset.task_name=02_PDL1 \
    ++result_type=protein_binder \
    ++metric.binder_folding_method=colabdesign \
    ++metric.inverse_folding_model=soluble_mpnn \
    ++run_name=eval_pdl1_af2

Use this when the user's PDBs are protein-binder designs (multi-chain, binder is the last chain) or third-party outputs from BindCraft / AlphaProteo / RFdiffusion. Pulls thresholds for protein_binder (i_pAE * 31 ≤ 7.0, pLDDT ≥ 0.9, scRMSD_ca < 1.5 Å).

Extensions — pick the matching config
Design typeUse the protein-binder default?Evaluate configAnalyze configresult_typeDefault backend
Protein binderYes (default)configs/evaluate_from_pdb_dir.yamlconfigs/analyze.yamlprotein_bindercolabdesign (AF2)
Ligand binder (binder + small-molecule)Same evaluate config, swap 3 overridesconfigs/evaluate_from_pdb_dir.yamlconfigs/analyze.yamlligand_binderrf3_latest
AME / motif + ligand (enzyme outputs)No — needs motif-aware configconfigs/evaluate_ame_from_pdb_dir.yamlconfigs/analyze_motif_binder.yamlmotif_ligand_binderrf3_latest
Motif protein binder (standalone)No — no _from_pdb_dir variantconfigs/evaluate_motif_binder.yaml + ++input_mode=pdb_dirconfigs/analyze_motif_binder.yamlmotif_protein_bindercolabdesign / rf3_latest

Extending to ligand binder (same evaluate config as default, three override swaps):

complexa analysis configs/evaluate_from_pdb_dir.yaml \
    ++sample_storage_path=/abs/path/to/pdbs \
    ++dataset.task_name=39_7V11_LIGAND \
    ++result_type=ligand_binder \
    ++metric.binder_folding_method=rf3_latest \
    ++metric.inverse_folding_model=ligand_mpnn \
    ++run_name=eval_v11_rf3

Extending to AME (different config; ligand auto-completion gotcha — see Step 4):

complexa analysis configs/evaluate_ame_from_pdb_dir.yaml \
    ++sample_storage_path=/abs/path/to/pdbs \
    ++dataset.task_name=M0096_1chm \
    ++run_name=eval_ame_chm

See references/eval_configs.md for the full matrix (every result_type, every threshold default, every supported folding backend, motif-protein-binder variant).

Step 3: Gather inputs (AskUserQuestion)

Ask in one batched AskUserQuestion:

  1. pdb_dir — absolute path to the directory of PDBs to evaluate.

  2. Design type — protein binder / ligand binder / AME (motif + ligand).

  3. Folding backend — colabdesign (AF2, protein binders), rf3_latest (ligand / AME), boltz2_default (alternative).

  4. Target / task name — must match a key in configs/targets/targets_dict.yaml, configs/targets/ligand_targets_dict.yaml, or configs/design_tasks/ame_dict_v2.yaml. Required for binder + AME evaluation (needed to identify the target reference and, for AME, the motif contigs).

  5. AME-only: confirm ligand residue name is already renamed to L:0 in every PDB (see Troubleshooting). If not, do that rename first.

Step 4: Run evaluate → analyze

Prefer complexa analysis (the evaluate→analyze chain) — it reuses the same config for both steps and writes a single log dir.

# Protein binder PDB dir, AF2 refold
complexa analysis configs/evaluate_from_pdb_dir.yaml \
  ++sample_storage_path=/abs/path/to/pdbs \
  ++dataset.task_name=02_PDL1 \
  ++metric.binder_folding_method=colabdesign \
  ++metric.inverse_folding_model=soluble_mpnn \
  ++result_type=protein_binder \
  ++run_name=eval_pdl1_af2

For ligand binders flip binder_folding_method=rf3_latest, inverse_folding_model=ligand_mpnn, result_type=ligand_binder. For AME use configs/evaluate_ame_from_pdb_dir.yaml — see references/eval_configs.md for full worked examples.

If you need to inspect output between stages, run them separately. The configs above are shared between evaluate and analyze:

complexa evaluate configs/evaluate_from_pdb_dir.yaml ++sample_storage_path=/abs/path/to/pdbs ++run_name=eval_pdl1_af2
complexa analyze  configs/evaluate_from_pdb_dir.yaml ++run_name=eval_pdl1_af2

Dry-run first if the user is unsure (no GPU work happens; the planned file walk + invocation prints):

complexa analysis configs/evaluate_from_pdb_dir.yaml ++sample_storage_path=/abs/path/to/pdbs ++dryrun=true
Direct module invocation (debug fallback)

complexa evaluate / analyze are subprocess wrappers around the Hydra modules with logging + parallel job splitting bolted on. To attach a debugger or run under a profiler, invoke the module directly:

python -m proteinfoundation.evaluate \
    --config-path "$(realpath configs)" \
    --config-name evaluate_from_pdb_dir \
    ++sample_storage_path=/abs/path/to/pdbs \
    ++dataset.task_name=02_PDL1 \
    ++metric.binder_folding_method=colabdesign \
    ++run_name=eval_debug

For normal one-shot runs prefer complexa analysis — you get the shared log dir and a single replayable invocation, instead of having to thread the same overrides through two python -m calls.

Step 5: Parse results

Output lands under ./evaluation_results/${run_name}/:

  • Per-PDB metrics CSV — *_results_*.csv (one row per input PDB × sequence_types).

  • Pass-rate summaries — written by the analyze step (e.g. res_designability.csv, res_filter_ligand_pass_*.csv, success_criteria_*.json).

  • Diversity output — FoldSeek/MMseqs2 cluster files when aggregation.compute_diversity=true (default).

Summarize to the user:

  • Per-PDB row count and number of successful designs vs total.

  • Default-threshold pass rate by result_type (e.g. for protein_binder: i_pAE*31 <= 7.0 AND pLDDT >= 0.9 AND scRMSD_ca < 1.5).

  • Top 5 designs by primary metric (i_pAE for protein, min_ipAE for ligand, motif_rmsd_pred_all for motif binders).

Step 6: Emit manifest

Capture the resolved invocation + outputs for replay.

python3 scripts/write_manifest.py \
  --output-dir ./evaluation_results/${run_name} \
  --command "complexa analysis configs/evaluate_from_pdb_dir.yaml ++sample_storage_path=<dir> ++dataset.task_name=<task> ++metric.binder_folding_method=<backend> ++run_name=<run>" \
  --skill complexa-evaluate-pdbs \
  --out ./eval_manifest.json

The manifest pins: resolved config, git SHA, ckpt SHA-256s, the result CSV paths, and the user-stated result_type for replay.

Most common overrides

OverrideEffect
++sample_storage_path=<dir>The directory of PDBs to evaluate (required).
++dataset.task_name=<name>Target / AME task name (binders, AME). Resolves target PDB + contigs.
++metric.binder_folding_method=<backend>colabdesign / rf3_latest / boltz2_default.
++metric.inverse_folding_model=<model>protein_mpnn / soluble_mpnn / ligand_mpnn.
++metric.sequence_types=[self,mpnn,mpnn_fixed]Which sequence flavors to refold.
++metric.num_redesign_seqs=NProteinMPNN/LigandMPNN redesign count.
++metric.compute_pre_refolding_metrics=trueAdd bioinformatics/TMOL/HBPLUS metrics on the input structures.
++metric.keep_folding_outputs=trueSave the refolded PDBs (large, but useful for inspection).
++result_type=<type>Override default thresholds: protein_binder / ligand_binder / motif_protein_binder / motif_ligand_binder.
++aggregation.success_thresholds.<…>Tighten or loosen specific thresholds (see references/eval_configs.md).
++eval_njobs=NParallel GPUs for the evaluate step.
++dryrun=truePlan without running any folding.
++file_limit=NCap input PDBs (handy for first-pass smoke tests).

Hardware

  • GPU: ≥1 CUDA GPU. AF2 (colabdesign) and RF3 (rf3_latest) need ≥40 GB VRAM (A100/H100/L40S). ESMFold runs on ≥24 GB. Multi-GPU via ++eval_njobs=N.

  • CPU/disk: 24 CPUs default (ncpus_: 24). Each refolded PDB + intermediate output is ~1–5 MB; keep_folding_outputs=true can balloon to tens of GB for thousands of inputs.

  • See references/hardware.md for per-backend wall-clock and VRAM tables.

Troubleshooting

  • Error: Config file not found — paths are relative to the repo root; cd to the repo before invoking complexa analysis.

  • compute_motif_binder_metrics=True but result_type=protein_binder — result_type and the underlying compute_*_metrics must agree. Use configs/evaluate_ame_from_pdb_dir.yaml for AME inputs rather than mutating evaluate_from_pdb_dir.yaml.

  • RF3 shape errors on AME PDBs — RF3 tries to auto-complete the ligand atoms from CCD. Rename the ligand residue to L:0 in every input PDB before evaluation; see the snippet in README.md (atom_array.res_name[ligand_mask] = "L:0").

  • Diversity step fails (foldseek not found) — FOLDSEEK_EXEC not on PATH. Either fix .env (preferred) or disable: ++aggregation.compute_diversity=false ++aggregation.compute_mmseqs_diversity=false.

  • All pass-rates are 0% — check the binder_folding_method matches the target type (RF3 for ligand, AF2 for protein) and that ++dataset.task_name resolves to the correct reference PDB (complexa target show <name> to verify).

Reference

Full evaluate/analyze config matrix, every supported result_type, per-threshold defaults, and three worked examples (protein binder / ligand binder / AME): see references/eval_configs.md.

Files

references/eval_configs.md

Evaluate-from-PDB-Dir Config Reference

Companion to SKILL.md. Every evaluate_*_from_pdb_dir.yaml and its paired analyze_*.yaml, with the result_type they emit, the dataset.* keys they require, and the metric.* / aggregation.* knobs they accept. Three worked examples at the bottom.

1. Design type → config matrix

Design typeEvaluate configAnalyze configresult_typeFolding backendsInverse-folding default
Protein binderconfigs/evaluate_from_pdb_dir.yamlconfigs/analyze.yamlprotein_bindercolabdesign, rf3_latest, esmfold, boltz2_default, protenix_base_default_v0.5.0soluble_mpnn
Ligand binderconfigs/evaluate_from_pdb_dir.yamlconfigs/analyze.yamlligand_binderrf3_latest (default), boltz2_defaultligand_mpnn
AME / motif ligand binderconfigs/evaluate_ame_from_pdb_dir.yamlconfigs/analyze_motif_binder.yamlmotif_ligand_binderrf3_latestligand_mpnn
Motif protein binderconfigs/evaluate_motif_binder.yaml (no _from_pdb_dir variant; set input_mode=pdb_dir)configs/analyze_motif_binder.yamlmotif_protein_bindercolabdesign, rf3_latestprotein_mpnn / soluble_mpnn

Notes:

  • The protein-binder and ligand-binder cases share evaluate_from_pdb_dir.yaml; switch behavior by setting result_type, metric.binder_folding_method, and metric.inverse_folding_model on the CLI.

  • There is no shipped evaluate_motif_protein_binder_from_pdb_dir.yaml; reuse configs/evaluate_motif_binder.yaml with ++input_mode=pdb_dir ++sample_storage_path=<dir> and an appropriate dataset/motif_target_dict_cfg override.

2. Evaluate config schema

All evaluate_* configs share a top-level shape (run identification, input_mode, protein_type, sample_storage_path, output_dir, eval_njobs, seed, ncpus_, dataset.*, metric.*). Below: the differences that matter when running from a PDB directory.

evaluate_from_pdb_dir.yaml
  • protein_type: binder (one config handles both protein and ligand binders).

  • input_mode: pdb_dir (already set; never override back to generated).

  • defaults: - generation/targets_dict@dataset — resolves dataset.task_name against configs/targets/targets_dict.yaml (and ligand_targets_dict via task naming).

  • Required dataset.*:

    • dataset.task_name — target key (e.g. 02_PDL1, 39_7V11_LIGAND).

  • Key metric.* fields:

    • compute_binder_metrics: true.

    • binder_folding_method — picks the refolding backend (table above).

    • sequence_types: [self|mpnn|mpnn_fixed] — which sequence(s) to refold.

    • num_redesign_seqs — MPNN sequence count (default 8 here).

    • interface_cutoff — Å cutoff for interface residue detection (default 8.0 protein, 6.0 motif).

    • inverse_folding_model — soluble_mpnn / protein_mpnn (protein) or ligand_mpnn (ligand).

    • compute_pre_refolding_metrics, pre_refolding.{bioinformatics,tmol,hbplus} — optional pre-refold interface metrics.

    • compute_refolded_structure_metrics, refolded.{bioinformatics,tmol,hbplus} — optional post-refold.

    • compute_monomer_metrics, compute_designability, compute_codesignability, designability_modes, codesignability_modes — monomer-on-binder eval.

    • compute_co_sequence_recovery, compute_ss — sequence/secondary-structure metrics.

    • compute_novelty_{pdb,afdb,afdb_rep_v4} — FoldSeek novelty against known DBs.

    • keep_folding_outputs — keep refolded PDBs.

  • File walk control:

    • ignore_generated_pdb_suffix: "_binder.pdb" (default) — drop intermediate binder-only PDBs from the walk.

    • file_limit: N — cap input count.

  • result_type is set inline (ligand_binder or protein_binder) and propagates to the paired analyze step.

evaluate_ame_from_pdb_dir.yaml
  • protein_type: motif_binder.

  • defaults: - /design_tasks/ame_dict_v2@dataset — resolves AME tasks (M0024_1nzy, M0096_1chm, etc.).

  • Required dataset.task_name — must match a key in ame_dict_v2.

  • Key metric.*:

    • compute_motif_binder_metrics: True.

    • binder_folding_method: rf3_latest (only RF3 makes sense for ligand motif binders).

    • inverse_folding_model: ligand_mpnn.

    • sequence_types: [mpnn_fixed, self] (default — mpnn_fixed keeps the motif residues constant).

    • interface_cutoff: 6.0.

    • compute_binder_metrics, compute_monomer_metrics — optional add-ons; compute_motif_metrics is incompatible with motif_binder.

  • result_type: motif_ligand_binder.

Shared reference configs (no _from_pdb_dir suffix)

These ship for completeness; the from_pdb_dir variants are derived from them with input_mode=pdb_dir baked in.

  • configs/evaluate.yaml — unified binder evaluation, defaults input_mode: generated. Pass ++input_mode=pdb_dir ++sample_storage_path=<dir> to evaluate an external directory.

  • configs/evaluate_motif_binder.yaml — motif binder (protein + ligand variants). Set ++result_type=motif_protein_binder (with AF2/ColabDesign + ProteinMPNN/SolubleMPNN) or rely on the default motif_ligand_binder (RF3 + LigandMPNN). Use this when you have motif-protein-binder PDBs — there is no dedicated _from_pdb_dir variant.

3. Analyze config schema

analyze.yaml
  • result_type: protein_binder (default) or ligand_binder (override).

  • aggregation.analysis_modes — default [binder, monomer] for binder result types.

  • aggregation.success_thresholds — null (defaults) or a dict of {metric: {threshold, op, scale, column_prefix}} entries.

  • Built-in defaults:

    • protein_binder: i_pAE * 31 <= 7.0, pLDDT >= 0.9, scRMSD_ca < 1.5.

    • ligand_binder: min_ipAE * 31 < 2.0, scRMSD_ca < 2.0, ligand_scRMSD_aligned_allatom < 5.0.

  • Monomer-mode thresholds (when [monomer] is in analysis_modes):

    • aggregation.designability_thresholds — {mode: {model: {threshold, op}}}; default 2.0 Å.

    • aggregation.ca_codesignability_thresholds — default 2.0 Å.

    • aggregation.allatom_codesignability_thresholds — default 2.0 Å.

    • aggregation.require_all_thresholds: false — false = OR across modes/models, true = AND.

analyze_motif_binder.yaml
  • result_type: motif_protein_binder (default in the YAML) or motif_ligand_binder (override on CLI).

  • aggregation.analysis_modes — default [motif_binder, binder, monomer].

  • aggregation.motif_binder_success_thresholds:

    • motif_protein_binder defaults — binder: i_pAE*31 <= 7.0, pLDDT >= 0.8, scRMSD_ca < 2.0; motif: motif_rmsd_pred_all < 2.0, correct_motif_sequence_all >= 1.0.

    • motif_ligand_binder defaults — binder: scRMSD_bb3 <= 2.0; motif: motif_rmsd_pred_all <= 1.5, correct_motif_sequence_all >= 1.0, has_ligand_clashes_all < 0.5.

  • A sample is successful when at least one redesign index passes every binder criterion AND every motif criterion jointly. Per-redesign joint evaluation, not pooled.

  • aggregation.success_thresholds (binder-only mode) and the three monomer threshold dicts work identically to analyze.yaml.

4. motif_protein_binder vs motif_ligand_binder

Both come from evaluate_motif_binder.yaml family + analyze_motif_binder.yaml. The split is target-driven:

Propertymotif_protein_bindermotif_ligand_binder (AME)
TargetProtein receptorSmall molecule ligand
Folding (binder_folding_method)colabdesign (AF2) or rf3_latestrf3_latest
Inverse foldingprotein_mpnn / soluble_mpnnligand_mpnn
Motif criteriaRMSD + seq recoveryRMSD + seq recovery + ligand clashes
Default binder thresholdi_pAE*31 <= 7.0, pLDDT >= 0.8, scRMSD_ca < 2.0scRMSD_bb3 <= 2.0
Default motif thresholdmotif_rmsd_pred_all < 2.0, correct_motif_sequence_all >= 1.0motif_rmsd_pred_all <= 1.5, seq recovery, has_ligand_clashes_all < 0.5
evaluate_*_from_pdb_dirnone — use evaluate_motif_binder.yaml + ++input_mode=pdb_direvaluate_ame_from_pdb_dir.yaml

When in doubt: if every PDB has a small-molecule ligand chain, it is motif_ligand_binder. If the second chain is another protein receptor, it is motif_protein_binder.

5. Ligand L:0 rename for AME RF3 evaluation

Lifted from README.md "Evaluating AME Designs with Ligand Targets (RF3)":

When running RF3 evaluation on AME-generated PDB files that contain a ligand (small molecule on chain A), RF3 will attempt to add missing atoms based on the ligand's CCD code. This can cause shape errors in downstream RMSD calculations and provide the incorrect structure.

Solution: rename the ligand residue to L:0 before passing to RF3. This tells RF3 to treat it as a generic ligand and skip atom completion.

from atomworks.io import load_any, to_pdb_file
atom_array = load_any("my_design.pdb")
ligand_mask = atom_array.chain_id == "A"
atom_array.res_name[ligand_mask] = "L:0"
to_pdb_file(atom_array, "my_design_rf3_ready.pdb")

Apply this transform once over the whole input directory before invoking complexa analysis configs/evaluate_ame_from_pdb_dir.yaml .... If the PDBs came out of complexa generate with protein_type=motif_binder, the rename is already done.

6. Worked examples

Example A — protein binder PDB directory, AF2 refold

User: "Re-fold these 200 PDL1 binders with AlphaFold2 and tell me what fraction passes the default AlphaProteo thresholds."

complexa analysis configs/evaluate_from_pdb_dir.yaml \
  ++sample_storage_path=/data/pdl1_designs \
  ++dataset.task_name=02_PDL1 \
  ++metric.binder_folding_method=colabdesign \
  ++metric.inverse_folding_model=soluble_mpnn \
  ++metric.sequence_types=[self,mpnn_fixed] \
  ++metric.num_redesign_seqs=8 \
  ++result_type=protein_binder \
  ++eval_njobs=2 \
  ++run_name=pdl1_pdb_dir_af2

Pass-rate filter (applied by analyze): mpnn_complex_i_pAE * 31 <= 7.0 AND mpnn_complex_pLDDT >= 0.9 AND mpnn_binder_scRMSD_ca < 1.5.

Example B — AME PDB directory, RF3 refold (motif ligand binder)

User: "Score this folder of AME 1nzy designs — joint binder + motif success please."

# First, rename ligand to L:0 in every PDB (one-time).
python scripts/rename_ligand_to_L0.py /data/ame_1nzy_designs

complexa analysis configs/evaluate_ame_from_pdb_dir.yaml \
  ++sample_storage_path=/data/ame_1nzy_designs \
  ++dataset.task_name=M0024_1nzy \
  ++metric.binder_folding_method=rf3_latest \
  ++metric.inverse_folding_model=ligand_mpnn \
  ++metric.sequence_types=[mpnn_fixed,self] \
  ++metric.num_redesign_seqs=2 \
  ++result_type=motif_ligand_binder \
  ++run_name=ame_m0024_pdb_dir

Joint success criterion (from analyze_motif_binder.yaml, motif_ligand_binder defaults): at least one redesign index satisfies binder scRMSD_bb3 <= 2.0 AND motif motif_rmsd_pred_all <= 1.5 AND correct_motif_sequence_all >= 1.0 AND has_ligand_clashes_all < 0.5.

Example C — ligand binder PDB directory, RF3 refold

User: "Score this folder of 7V11 ligand-binder designs with RF3 and LigandMPNN."

complexa analysis configs/evaluate_from_pdb_dir.yaml \
  ++sample_storage_path=/data/7v11_designs \
  ++dataset.task_name=39_7V11_LIGAND \
  ++metric.binder_folding_method=rf3_latest \
  ++metric.inverse_folding_model=ligand_mpnn \
  ++metric.sequence_types=[self,mpnn_fixed] \
  ++metric.num_redesign_seqs=8 \
  ++result_type=ligand_binder \
  ++eval_njobs=2 \
  ++run_name=7v11_pdb_dir_rf3

Pass-rate filter (applied by analyze): min_ipAE * 31 < 2.0 AND scRMSD_ca < 2.0 AND ligand_scRMSD_aligned_allatom < 5.0. Override via ++aggregation.success_thresholds.min_ipAE.threshold=… etc.

7. Pointers

  • Per-metric output column names: Evaluation & Analysis Guide, "Result CSV Reference".

  • Default thresholds and Python filter examples: Evaluation & Analysis Guide, "Success Criteria" and "Reading Results in Python".

  • Hardware tables (VRAM per backend, wall-clock per N PDBs): references/hardware.md.

Requirements and compatibility

Written for: Claude Code

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Declares allowed tools, Names Claude Code tools, Needs Python

The author says: complexa CLI installed (pip install -e .); CUDA GPU; AF2_DIR (colabdesign) or RF3_CKPT_PATH+RF3_EXEC_PATH (rf3_latest); ESMFold weights for monomer paths

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs
  • Instructions that use the network
  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
NVIDIA
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/bionemo-complexa-evaluate-pdbs · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download complexa-evaluate-pdbs.zip