Skip to content
Back to skills

Protenix

ASecurity

Protenix v1 is an AF3-class structure prediction model (368M parameters) for proteins, complexes, and protein-ligand systems. This skill wraps the `protenix` CLI with a documented input spec, an input-validating Python entry point, and a multi-seed ensemble aggregator so that callers can drive predictions through scripts instead of ad-hoc bash invocations. The default compute target is the **local GPU**. HPC (RunPod) is the second choice and Tamarind cloud is the fallback — set the target via...

  • 117 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 16, 2026
ai-agentspythongobashexpressapidatabasedocumentation

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 5 files and shows the line behind each finding

Scanned October 16, 2026

npx -y skills add 001TMF/blatant-why --skill protenix --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Protenix?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Protenix
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/001tmf-protenix/badge)](https://www.skillsdirectory.com/skills/001tmf-protenix)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "skill_e18f7e05c7e74168bf07a630d9d6a611"
name: "protenix"
display-name: "Protenix Structure Prediction"
short-description: "Run Protenix v1 (AF3-class, 368M params) structure prediction from a sequence-level JSON spec; emits confidence metrics (ipTM, pTM, pLDDT, ranking_score) for fold validation and complex refolding. Use when predicting a protein or complex structure, validating a designed binder by refolding, or running a multi-seed ensemble to assess prediction stability."
category: "tool"
keywords: "protenix, structure prediction, fold, refold, validation, confidence, ipTM, pTM, pLDDT, multi-seed ensemble, complex prediction, protein-ligand"
version: "1.0"
last-updated: "2026-05-20"
---

# Protenix — Structure Prediction Skill

Protenix v1 is an AF3-class structure prediction model (368M parameters) for proteins,
complexes, and protein-ligand systems. This skill wraps the `protenix` CLI with a
documented input spec, an input-validating Python entry point, and a multi-seed
ensemble aggregator so that callers can drive predictions through scripts instead of
ad-hoc bash invocations.

The default compute target is the **local GPU**. HPC (RunPod) is the second choice
and Tamarind cloud is the fallback — set the target via `--target` (see scripts).

## When to Use This Skill

Use Protenix when you have:

- ✅ **A sequence (or set of sequences) and need a 3D structure** — single chain, complex, homo-oligomer, or protein-ligand.
- ✅ **A designed binder to validate by refolding** — predict the binder + target complex and inspect ipTM / interface pLDDT.
- ✅ **A need for explicit confidence metrics** — ipTM, pTM, pLDDT, ranking_score.
- ✅ **A need for multi-seed ensemble stability** — 3-25 seeds with variance reported.
- ✅ **A protein-ligand complex** — SMILES + protein chain via the `ligand` entity type.
- ✅ **A local GPU available** (CUDA, bf16 capable) or an approved HPC / Tamarind path.

Do NOT use Protenix when:

- ❌ **You need to design a new binder** → use `pxdesign` (de novo binder) or `boltzgen` (antibody / nanobody).
- ❌ **You only need to score an existing prediction** (ipSAE from PAE matrices) → use `by-scoring`.
- ❌ **You need the full liability + developability battery** → use `by-screening`.
- ❌ **You need to fetch sequences from PDB/UniProt** → use `by-database` first, then return here.
- ❌ **You are running on CPU only** → Protenix requires a CUDA-capable GPU; no CPU fallback.
- ❌ **You want pipeline orchestration across research → design → screen** → use `by-design-workflow`.

## Quick Start

Local GPU (default). Write an input JSON, then run the wrapper script:

```bash
# 1. Write input spec (one prediction object, JSON array form)
cat > /tmp/fold_run/input.json <<'JSON'
[
  {
    "name": "lysozyme_pred",
    "sequences": [
      {"proteinChain": {"sequence": "KVFGRCELAA...", "count": 1}}
    ],
    "modelSeeds": [42],
    "sampleCount": 1
  }
]
JSON

# 2. Run via the wrapper (validates input, invokes local GPU CLI)
python scripts/protenix_fold.py \
  --input /tmp/fold_run/input.json \
  --output-dir /tmp/fold_run/output \
  --model protenix_base_default_v1.0.0 \
  --target local

# 3. Read confidence
ls /tmp/fold_run/output/lysozyme_pred/seed_42/*_summary_confidence_sample_*.json
```

✅ **VERIFICATION:** Expect `✓ Protenix prediction completed: <output-dir>` on success and at least one `*_summary_confidence_sample_*.json` plus matching `*_sample_*.cif` structure file per seed.

For HPC dispatch, swap `--target local` for `--target hpc` (see `by-deploy-compute` skill for RunPod setup). For Tamarind, use `--target tamarind`.

## Installation

| Software | Version | License | Commercial Use | Installation |
|----------|---------|---------|----------------|--------------|
| Protenix CLI | v1.0 | Apache 2.0 | ✅ Permitted | Install per Protenix repo; expose binary on `PATH` |
| Python | ≥ 3.10 | PSF | ✅ Permitted | `pyenv install 3.10` / system package manager |
| CUDA toolkit | ≥ 11.8 | NVIDIA EULA | ✅ Permitted (research/commercial per EULA) | Per NVIDIA install guide |
| `numpy` | ≥ 1.24 | BSD-3 | ✅ Permitted | `pip install numpy` |

**Environment variables (required for local target):**

| Variable | Value | Notes |
|----------|-------|-------|
| `PROTEUS_FOLD_DIR` | absolute path to the Protenix install | Owned by the user — do not edit |
| `PROTENIX_ROOT_DIR` | `$PROTEUS_FOLD_DIR` | Read by the CLI binary |

**System requirements:**
- CUDA-capable GPU with sufficient VRAM (24 GB+ recommended for `base_*` on complexes > 600 residues).
- bf16 precision required (default `--dtype bf16`).
- HPC/RunPod and Tamarind paths handled by `by-deploy-compute`; this skill only routes to them via `--target`.

**License compliance:** All listed software permits commercial use under the cited licenses.

## Inputs

**Required:**

- **Input JSON** — JSON array containing exactly one prediction object:
  - `name` (string): identifier for output naming, alphanumeric + underscores.
  - `sequences` (array): at least one entity (`proteinChain` or `ligand`).
  - `modelSeeds` (array of int): one or more seeds; each generates an independent prediction subdir.
  - `sampleCount` (int ≥ 1): diffusion samples per seed.
  - See `references/input-json-spec.md` for the full schema, entity types, and edge cases.
- **Output directory** — writable absolute path; the script creates it if missing.

**Optional:**

- **Model name** — defaults to `protenix_base_default_v1.0.0`. See model table below.
- **Compute target** — `local` (default) | `hpc` | `tamarind`.
- **Dtype** — `bf16` (default). Do not change unless you understand the precision/VRAM trade-off.

**Model selection table:**

| Key | Full model name | Use case |
|-----|-----------------|----------|
| `base_default` | `protenix_base_default_v1.0.0` | **Recommended.** Production predictions, validation. |
| `base_20250630` | `protenix_base_20250630_v1.0.0` | Latest checkpoint. Try when `base_default` gives borderline confidence. |
| `mini` | `protenix_mini_default_v0.5.0` | Fast screening. Lower accuracy, 3-5x faster. |
| `tiny` | `protenix_tiny_default_v0.5.0` | Pipeline-debug only. Never for real predictions. |
| `mini_esm` | `protenix_mini_esm_v0.5.0` | Mini + ESM embeddings; better single-chain accuracy. |

## Outputs

All outputs land under the `--output-dir` provided to `protenix_fold.py`.

**Per-prediction directory layout:**

```
<output-dir>/
  <name>/
    seed_<int>/
      <name>_summary_confidence_sample_<i>.json   # confidence metrics, JSON
      <name>_sample_<i>.cif                       # structure, mmCIF
      <name>_full_data_sample_<i>.json            # full per-residue arrays (if model emits)
```

**Confidence JSON fields (`*_summary_confidence_sample_*.json`):**

| Field | Type | Description |
|-------|------|-------------|
| `iptm` | float or list[float] | Interface predicted TM-score (0-1). Key metric for complexes. |
| `ptm` | float or list[float] | Predicted TM-score (0-1). Overall fold quality. |
| `plddt` | float or list[float] | Per-residue confidence average (0-100). |
| `ranking_score` | float or list[float] | Composite ranking score — use to pick the best sample. |

**Note:** Metrics may be wrapped as single-element lists. Always index `[0]` or handle both forms.

**Ensemble outputs (from `scripts/multi_seed_ensemble.py`):**

| File | Format | Description |
|------|--------|-------------|
| `ensemble_summary.json` | JSON | Mean / std / min / max for ipTM, pTM, pLDDT, ranking_score across all (seed, sample) pairs; agreement metric; best (seed, sample) pointer. |
| `ensemble_ranked.csv` | CSV | One row per (seed, sample), columns: `seed`, `sample`, `iptm`, `ptm`, `plddt`, `ranking_score`, sorted by `ranking_score` desc. |

For confidence-acceptance thresholds and failure modes, see `references/confidence-metrics.md`.

## Clarification Questions

**⚠️ CRITICAL: ASK THIS FIRST.** Always confirm the input spec exists before calling the CLI.

1. **Input spec** (ASK THIS FIRST):
   - Have you written the input JSON, or should I draft it from a sequence (or set of sequences)?
   - If drafting: provide the sequence(s), chain count(s), and whether ligands are involved.

2. **Prediction goal:**
   - Single-fold prediction, refold validation of a designed binder, or multi-seed ensemble?
   - This decides `modelSeeds` (1 vs 3 vs 5-25) and `sampleCount`.

3. **Complex composition:**
   - For complexes, list every chain — missing the target chain makes `ipTM` meaningless (no interface to score).

4. **Confidence acceptance bar:**
   - Are you validating (need a YES/NO call), ranking (pick best of N), or submitting for production?
   - See `references/confidence-metrics.md` for thresholds per use case.

5. **Compute target:**
   - Local GPU (default), HPC (RunPod), or Tamarind? Default is `local`; only switch if the user explicitly chose another provider or local fails.

6. **Output location:**
   - Where should outputs land? Default: `/tmp/fold_run/output/` for ad-hoc, or `campaigns/<target>/.../fold/` for a campaign.

7. **Model choice:**
   - Default `base_default`. Switch to `mini` only for rapid feasibility; `tiny` is debug-only.

## Standard Workflow

🚨 **MANDATORY: USE THE SCRIPTS — DO NOT WRITE INLINE PROTENIX CLI INVOCATIONS** 🚨

Driving Protenix through `scripts/protenix_fold.py` ensures input validation, target routing, and structured logging.

1. **Write the input JSON** (per `references/input-json-spec.md`).

   ✅ **VERIFICATION:** The file parses as a JSON array containing one object with `name`, `sequences`, `modelSeeds`, `sampleCount`.

2. **Run the prediction:**

   ```bash
   python scripts/protenix_fold.py \
     --input <path-to-input.json> \
     --output-dir <output-dir> \
     --model protenix_base_default_v1.0.0 \
     --target local
   ```

   ✅ **VERIFICATION:** `✓ Protenix prediction completed: <output-dir>` printed; at least one `*_summary_confidence_sample_*.json` per seed.

3. **(Optional) Multi-seed ensemble aggregation:**

   ```bash
   python scripts/multi_seed_ensemble.py \
     --output-dir <output-dir>/<name> \
     --summary-json <output-dir>/<name>/ensemble_summary.json \
     --ranked-csv  <output-dir>/<name>/ensemble_ranked.csv
   ```

   ✅ **VERIFICATION:** `✓ Ensemble aggregated: <N> (seed,sample) records → <summary path>` printed.

4. **Interpret confidence** using `references/confidence-metrics.md` (acceptance thresholds, failure modes).

❌ **DON'T:**
- ❌ Run `protenix pred …` directly without `protenix_fold.py` — you skip input validation.
- ❌ Use absolute paths baked into the repo — pass paths via CLI flags.
- ❌ Conclude binding from a single seed — always re-run with ≥ 3 seeds for any acceptance decision.

## When Scripts Fail

Follow the script-failure hierarchy (fix 90% / modify 5% / reference 4% / scratch 1%):

1. **Fix and retry (90%)** — usually a missing env var (`PROTENIX_ROOT_DIR`), an invalid JSON spec, or insufficient GPU memory. Set env, fix JSON, reduce `sampleCount` / chains, retry.
2. **Modify the script (5%)** — edit `scripts/protenix_fold.py` if the underlying CLI flags change (e.g., new dtype, new model). Keep the validation step.
3. **Use as reference (4%)** — read the wrapper to learn the call shape, then adapt for an exotic input (custom MSA, frozen residues) the wrapper does not cover.
4. **Write from scratch (1%)** — only if Protenix gains a flag the wrapper cannot express, and you document why.

When `--target local` fails: report the error and offer to dispatch via HPC (`--target hpc`). Do **not** silently switch providers — see `CLAUDE.md` "Compute Provider Selection".

## Common Issues

| Issue | Cause | Solution | Details |
|-------|-------|----------|---------|
| `protenix: command not found` | `PROTENIX_ROOT_DIR` / `PATH` not set | `export PROTENIX_ROOT_DIR=$PROTEUS_FOLD_DIR` and ensure binary is on `PATH` | Installation section |
| Input parse error | JSON not wrapped in outer array | Wrap as `[{...}]`, not `{...}` | `references/input-json-spec.md` |
| `ipTM = 0` with reasonable `pLDDT` | Only one chain in `sequences` (no interface) | Include every chain of the intended complex | `references/confidence-metrics.md` |
| Unknown model | Used model key instead of full name | Use full name e.g. `protenix_base_default_v1.0.0` | Model table above |
| CUDA out of memory | Sequence(s) too long or too many samples | Reduce `sampleCount`, drop to `mini`, or split the system | Installation section |
| All confidence ≈ 0 | Malformed input JSON (e.g., lowercase sequence, bad SMILES) | Re-validate against the input spec | `references/input-json-spec.md` |
| Output directory empty | CLI errored mid-run | Inspect stderr from the script | When Scripts Fail |
| Very slow prediction | Large complex on `base_*` | Expected for > 1000 residues; use `mini` for first-pass triage | Model table |
| Single-seed acceptance call | Diffusion variance underestimated | Re-run with ≥ 3 seeds; use ensemble script | `references/confidence-metrics.md` |
| Metric type mismatch (`float > 0.5` errors on list) | Metric returned as `[0.83]` | Always handle both `float` and `[float]` forms (the ensemble script does this) | Outputs section |
| `ranking_score` ties across samples | Diffusion produced near-identical structures | Either accept the top one or increase `sampleCount` | Outputs section |
| Local target fails repeatedly | GPU busy / driver issue | Report; offer HPC dispatch via `--target hpc`; do not silently switch | `by-deploy-compute` skill |

## Best Practices

1. 🚨 **CRITICAL:** Always drive predictions through `scripts/protenix_fold.py`; never call the CLI inline.
2. 🚨 **CRITICAL:** Use ≥ 3 seeds for any acceptance / rejection decision. One seed is informational only.
3. ✅ **REQUIRED:** Include every chain of the intended complex — missing the target chain makes `ipTM` meaningless.
4. ✅ **REQUIRED:** Validate inputs (the wrapper does this) before submitting expensive HPC / Tamarind jobs.
5. ✅ Use `base_default` for production; switch to `mini` only for rapid triage.
6. ✅ Pick the best sample by `ranking_score`, not by `ipTM` alone.
7. ✅ Record the full model name in any downstream artifact (so results are reproducible).
8. ✅ Respect the user's compute-provider choice. Default is `local`; never silently fall back.
9. ✨ Keep input JSON alongside outputs (drop a copy in `<output-dir>/<name>/input.json`) for audit.
10. ❌ Don't use `tiny` for anything except pipeline plumbing tests.

## Suggested Next Steps

After a Protenix run completes:

- **`by-scoring`** — compute ipSAE from PAE matrices for finer interface ranking; ipSAE is the primary metric in the BY composite score.
- **`by-screening`** — run the full liability + developability battery on the predicted complex (only after the fold passes the confidence bar).
- **`by-epitope-analysis`** — when validating a binder, confirm the predicted interface matches the intended epitope.
- **`multi_seed_ensemble.py`** (this skill) — aggregate confidence across seeds before any acceptance call.

Chain rationale: Protenix produces structure + confidence; downstream skills convert those into a defensible accept/reject call. Skipping `by-scoring` / `by-screening` after a fold means you have a structure but no ranked decision.

## Related Skills

**Upstream:**
- `by-database` — fetch target sequences from PDB / UniProt / SAbDab before writing the input JSON.
- `by-research` — characterise the target and epitope before designing/validating.

**Downstream:**
- `by-scoring` — ipSAE and PAE-derived metrics.
- `by-screening` — liability + developability + composite scoring.
- `by-epitope-analysis` — confirm the interface is on the intended epitope.

**Alternative / complementary:**
- `pxdesign` — design a new non-antibody binder (then refold with Protenix).
- `boltzgen` — design antibodies / nanobodies (then refold with Protenix).
- `by-deploy-compute` — how to dispatch to HPC (RunPod) when `--target hpc` is needed.

**Workflow context:**
- `by-design-workflow` — overall pipeline that calls Protenix at the fold-validation step.

## References

**Detailed documentation in `references/`:**

- [`references/input-json-spec.md`](references/input-json-spec.md) — complete input JSON schema: fields, entity types, multi-chain examples, edge cases.
- [`references/confidence-metrics.md`](references/confidence-metrics.md) — how to read ipTM / pTM / pLDDT / ranking_score, multi-seed ensemble guidance, acceptance thresholds by use case, failure-mode taxonomy.

**Scripts in `scripts/`:**

- `scripts/protenix_fold.py` — CLI wrapper: validates the input JSON, invokes Protenix locally (default) or routes to HPC / Tamarind via `--target`, writes outputs.
- `scripts/multi_seed_ensemble.py` — aggregates Protenix outputs across N seeds: emits `ensemble_summary.json` (mean / std / agreement / best pointer) and `ensemble_ranked.csv` (one row per (seed, sample)).

**Related project documentation:**
- `CLAUDE.md` — BY agent identity, compute provider selection rules.
- `by-deploy-compute` skill — RunPod / HPC dispatch details.

**License:** All packages and tools listed above permit commercial use under their stated licenses.

Files in this skill

  • SKILL.md17 KB
  • references/confidence-metrics.md8.7 KB
  • references/input-json-spec.md5.5 KB
  • scripts/multi_seed_ensemble.py8.5 KB
  • scripts/protenix_fold.py9.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.