Skip to content
Back to skills

Alphadynamics

ASecurity

Run AlphaDynamics protein torsion-dynamics prediction. Use when user wants to predict, analyze, or compare backbone dihedral (phi/psi) ensembles for a peptide / short protein sequence — e.g. "predict torsions for AAAY", "what conformations does KLVFFAE adopt", "compare AAAY vs AAAW", "Ramachandran for [sequence]". The Python package `alphadynamics` (v0.3.9+) is already pip-installed system-wide.

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
datapythonbashgit

Works with

  • terminal
  • cli

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add krisss0mecom/AlphaDynamics --skill alphadynamics --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alphadynamics?

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

Security grade badge for Alphadynamics
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/krisss0mecom-alphadynamics/badge)](https://www.skillsdirectory.com/skills/krisss0mecom-alphadynamics)

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
---
name: alphadynamics
description: Run AlphaDynamics protein torsion-dynamics prediction. Use when user wants to predict, analyze, or compare backbone dihedral (phi/psi) ensembles for a peptide / short protein sequence — e.g. "predict torsions for AAAY", "what conformations does KLVFFAE adopt", "compare AAAY vs AAAW", "Ramachandran for [sequence]". The Python package `alphadynamics` (v0.3.9+) is already pip-installed system-wide.
---

# AlphaDynamics — predict protein torsion ensembles

This skill is for running the locally-installed `alphadynamics` package
(authored by Krzysztof Gwozdz, the user). It predicts an ensemble of
(phi, psi) trajectories for a peptide sequence — useful for:

- Quick Ramachandran ensemble analysis
- Comparing sequence variants / mutants
- Estimating alpha/beta/PPII basin populations
- Sanity-checking before launching real MD

## Workflow

### 1. Get sequence from user

If user gave a 1-letter amino-acid sequence (e.g. `AAAY`, `KLVFFAE`),
use it directly. If unclear, ask once.

**Calibrated scope is 4-15 aa.** Sequences longer than 20 aa are outside
the calibrated scope — predictions still run, but warn the user that the
propagator does not exchange information across residues, so aggregate
Ramachandran density for long diverse chains tends toward an "average
amino-acid" pattern. For chains >20 aa prefer per-residue Ramachandran
panels over the aggregate plot. The package emits a soft `UserWarning`
automatically for N>20.

### 2. Run prediction

Use the CLI directly (it auto-downloads weights from GitHub Releases
on first use, into `~/.cache/alphadynamics/weights/`):

```bash
alphadynamics predict --sequence <SEQ> --n-ensemble <N> --rollout-steps <T> --device cpu -o /tmp/<SEQ>.npz
```

**Sane defaults** (use unless user asks otherwise):

- Quick exploration: `--n-ensemble 4 --rollout-steps 200` (~10 sec on CPU)
- Standard: `--n-ensemble 16 --rollout-steps 2500` (~5-15 min on Jetson CPU,
  faster on GPU/x86)

Prefer `--device cpu` on Jetson Orin (8GB unified RAM is fragile for GPU torch).
Prefer `--device cuda` on dedicated NVIDIA boxes.

### 3. Analyze output

The output is an `.npz` file with `torsions` of shape
`(ensemble, time, residues, [phi, psi])`, all in radians.

Inline Python analysis the user will care about:

```python
import numpy as np
d = np.load('/tmp/<SEQ>.npz', allow_pickle=True)
t = d['torsions']
phi_deg = np.degrees(t[..., 0].flatten())
psi_deg = np.degrees(t[..., 1].flatten())

def basin(plo, phi_, slo, shi):
    return ((phi_deg >= plo) & (phi_deg <= phi_) &
            (psi_deg >= slo) & (psi_deg <= shi)).mean() * 100

print(f"alpha-helix R    : {basin(-130,-30,-90,30):.1f}%")
print(f"beta-sheet       : {basin(-180,-90,70,180):.1f}%")
print(f"PPII extended    : {basin(-90,-30,100,180):.1f}%")
print(f"alpha-helix L    : {basin(30,100,-10,90):.1f}%  (sterically forbidden)")
```

Report the basin populations to the user with a one-line interpretation
(e.g. "Dominantly PPII / extended; some alpha-helix; alpha-L below 2%
which means model honours steric exclusion correctly").

### 4. Optional: plot Ramachandran

If user explicitly asks for a plot AND matplotlib is available, save a
2D histogram PNG. Otherwise skip — terminal output is enough.

```python
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
plt.hist2d(phi_deg, psi_deg, bins=50, range=[[-180,180],[-180,180]], cmap="viridis")
plt.xlabel("phi (deg)"); plt.ylabel("psi (deg)")
plt.title(f"AlphaDynamics — {seq}")
plt.colorbar(label="count")
plt.savefig("/tmp/<SEQ>_rama.png", dpi=120)
```

### 5. Compare two sequences

If user wants to compare (e.g. wild-type vs mutant), run prediction for
each, then report basin populations side by side. Highlight which basin
shifted most.

## Hard limits — be honest with the user

The user IS the author of this model. Don't oversell. Be honest about:

- **Density only, not kinetics.** Model captures *where* the peptide spends
  time on the Ramachandran torus, not *when* transitions happen. Don't
  claim residence times or transition rates.
- **Calibrated scope is 4-15 aa.** The training corpus mixed 4AA + N=48 +
  N=98 mdCATH peptides, but the phase-flow propagator couples oscillators
  within a residue and does NOT exchange information across residues. At
  lengths above ~20 aa the per-residue signal collapses toward an "average
  amino-acid" Ramachandran. Aggregate plots for two diverse 30-aa chains
  will look indistinguishable. Use per-residue panels above ~20 aa.
- **Backbone only.** No side-chain rotamers, no Cartesian xyz, no docking.
- **Headline benchmark:** mean Ramachandran JSD 0.196 on the canonical 4AA
  test set (3 held-out tetrapeptides AAAY/AACE/AAEW), vs Microsoft Timewarp
  0.468 — 2.39× lower JSD at ~3000× fewer parameters. Beyond 4AA, longer-
  chain numbers were measured on internal mdCATH holdouts (not a public
  head-to-head test set) and become uninformative for aggregate density
  above ~20 aa.
- **Initial torsions are sequence-conditioned** (AD-Init prior) by default
  since v0.3.9, not uniform random. Pass `init_model_name=None` to fall
  back to the legacy uniform random seed.

## Available models

```
ad_transfer_v2_clean (default)  — main propagator, 78K params
ad_init_full_1477               — von Mises mixture prior, 45K params
```

Use the default. Since v0.3.9, AD-Init is also automatically used as the
initial-torsion sampler (sequence-conditioned seed instead of uniform
random) — no need to load it manually.

## Resources

- Source: https://github.com/krisss0mecom/AlphaDynamics
- PyPI: https://pypi.org/project/alphadynamics/
- Paper v2 (per-system, related work): Zenodo DOI 10.5281/zenodo.19877815

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.