Skip to main content

Phi CLI and biomodals for the dyno protein design platform

Project description

dyno-phi

Phi CLI for the dyno protein structure analysis platform.

phi is the command-line interface for uploading protein structures, running structure prediction and inverse-folding pipelines, filtering and scoring candidates, and downloading results from the dyno API.

Results and scores are viewable in the web dashboard at design.dynotx.com/dashboard/datasets/<dataset_id>.


Table of contents


Installation

pip install dyno-phi

Requires Python ≥ 3.9.


Authentication

Create an API key at Settings → API keys in the dyno web app (https://design.dynotx.com/dashboard/settings), then export it:

export DYNO_API_KEY=ak_...

The key is cached to .phi/state.json on first use so you don't need to re-export it in future sessions.

Verify your connection:

phi login

Quick start

Try the tutorial

The fastest way to get started — downloads five example PD-L1 binder structures and walks you through the full pipeline:

phi tutorial

This fetches the example files, prints step-by-step instructions, and leaves you ready to run phi filter.

Scoring your own structures

# 1. Upload PDB/CIF files
phi upload ./designs/

# 2. Run the full filter pipeline
phi filter --preset default --wait

# 3. View scores and download results
phi scores
phi download --out ./results/

After each command, phi prints the active dataset and a link to the dashboard:

Active: dataset [d7c3a1b2-...] · job [cb4553f5-...]
Dashboard: https://design.dynotx.com/dashboard/datasets/d7c3a1b2-...

Command reference

Command Alias Description
phi tutorial Download example structures and print a step-by-step walkthrough
phi login Verify API key and print identity
phi upload Upload PDB/CIF files or a directory
phi fetch Download a structure from RCSB PDB or AlphaFold DB, crop, and optionally upload
phi datasets List datasets
phi dataset Show dataset details
phi use <dataset_id> Set active dataset (cached to .phi/state.json)
phi folding esmfold Single-sequence structure prediction (ESMFold)
phi complex_folding alphafold Multi-chain complex prediction (AlphaFold2 multimer)
phi inverse_folding proteinmpnn Sequence design via inverse folding (ProteinMPNN)
phi esm2 Sequence embedding and scoring (ESM2)
phi boltz Structure prediction (Boltz-1)
phi filter Full filter pipeline: inverse folding → folding → complex folding → score
phi status <job_id> Poll job status
phi jobs List recent jobs
phi logs <job_id> Stream job logs
phi cancel <job_id> Cancel a running job
phi scores Display scores table for a completed filter job
phi download Download job artifacts (structures, scores, raw JSONs)
phi research Run a research query against the platform
phi notes Manage dataset research notes

Common flags

Flag Commands Description
--dataset-id ID most Target dataset (omit to use cached)
--wait most Poll until job completes, then print summary
--out DIR download, scores Output directory (default: ./results)
--preset default|relaxed filter Filter threshold preset
--num-sequences N inverse_folding Sequences per design (default: 4)
--models 1,2 complex_folding AlphaFold2 model numbers (default: 1,2,3)
--poll-interval S global Seconds between status polls (default: 5)

Filter presets

phi filter applies a multi-stage quality-control pipeline and scores each design against configurable thresholds.

Metric default relaxed Description
pLDDT ≥ 0.80 ≥ 0.80 ESMFold per-residue confidence
pTM ≥ 0.55 ≥ 0.45 Global TM-score proxy (ESMFold)
ipTM ≥ 0.50 ≥ 0.50 Interface pTM (AF2 multimer)
iPAE ≤ 10.85 Å ≤ 12.4 Å AF2 interface PAE in Å
RMSD ≤ 3.5 Å ≤ 4.5 Å Backbone RMSD vs. reference

Override any threshold with an explicit flag:

phi filter --dataset-id ... --plddt 0.75 --iptm 0.45

State caching

phi caches the most recently used dataset ID, job ID, and API key in .phi/state.json so you don't need to pass --dataset-id or re-export your key repeatedly:

phi use d7c3a1b2-...         # set active dataset
phi filter --preset default  # uses cached dataset
phi scores                   # uses cached job
phi download --out ./results # uses cached job

The dashboard URL for the active dataset is printed after every command:

Dashboard: https://design.dynotx.com/dashboard/datasets/d7c3a1b2-...

Claude Code skill

The phi skill is bundled at skills/phi/SKILL.md and is automatically available when you open this repo in Claude Code (Cursor or the claude CLI). No installation needed — just open the project and ask naturally:

Upload the PDB files in ./examples/ and run the default filter pipeline.

To make the skill available in all your projects (outside this repo):

mkdir -p ~/.claude/skills/phi
cp skills/phi/SKILL.md ~/.claude/skills/phi/SKILL.md

Development

git clone https://github.com/dynotx/phi-cli
cd phi-cli
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Lint
ruff check src/

# Type check
mypy src/phi/

# Run tests
pytest tests/

Releasing to PyPI

Releases are published via GitHub Actions. Push a version tag to trigger the workflow:

# Bump src/phi/_version.py, update CHANGELOG.md, then:
git tag v0.1.0
git push origin main --tags

The workflow publishes to TestPyPI automatically, then waits for manual approval before publishing to the real PyPI. See .github/workflows/publish.yml for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dyno_phi-0.2.2.tar.gz (413.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dyno_phi-0.2.2-py3-none-any.whl (158.2 kB view details)

Uploaded Python 3

File details

Details for the file dyno_phi-0.2.2.tar.gz.

File metadata

  • Download URL: dyno_phi-0.2.2.tar.gz
  • Upload date:
  • Size: 413.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dyno_phi-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4745d5a9ee3e9a3f531240f019e4861fb54076cdab3fb37f0ba858b18e456abc
MD5 2b97f4ff2ce569f1647bc200fecff3f5
BLAKE2b-256 1c8a89cb68360e0b09a031b3568568ce9e462ecea4492eb59d9d236f7096646e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dyno_phi-0.2.2.tar.gz:

Publisher: publish.yml on dynotx/phi-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dyno_phi-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: dyno_phi-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 158.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dyno_phi-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5425a2c69722514783f0e331abd7e12dbb9e2b37e210f9909b0ef4790ab5e6b9
MD5 085d2727e3a9871ea6f5b9e972989b01
BLAKE2b-256 2ff12453b19edef2a3dd29421482041a0d0bd5ce3602201fc893010046c68797

See more details on using hashes here.

Provenance

The following attestation bundles were made for dyno_phi-0.2.2-py3-none-any.whl:

Publisher: publish.yml on dynotx/phi-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page