Back

CLI Reference

Phi CLI Reference

phi is the command-line interface for the Dyno Phi filtering platform. Upload binder candidate datasets, run the scoring and filtering pipeline, manage jobs, and download results — all from your terminal.

Version: 0.1.0·Package: dyno-phi·Requires: Python ≥ 3.9·GitHub

Installation & authentication

pip install dyno-phi
# or with uv:
uv tool install dyno-phi

Set your API key (obtain from Settings → API keys in the Dyno web app):

export DYNO_API_KEY=ak_...

Verify your connection:

phi login

Global flags

FlagDefaultDescription
--poll-interval S5Seconds between status-poll requests
--versionPrint version and exit
--helpShow help for any command

State caching

phi caches the most recently used dataset ID and job ID in .phi-state.json in the current directory. You don't need to pass --dataset-id or job_id repeatedly in a session.

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

The footer line printed after every command shows the current active IDs:

Active: dataset [d7c3a1b2-...] · job [cb4553f5-...]

Command index

CommandAliasesDescription
phi loginVerify API key and print connection + identity
phi fetchDownload a structure from RCSB PDB or AlphaFold DB, crop, optionally upload
phi uploadUpload PDB/CIF/FASTA files or a directory → create a dataset
phi useSet the active dataset ID
phi datasetsList your datasets
phi datasetShow details for a single dataset
phi ingest-sessionCheck the status of an ingest session
phi foldingesmfoldFast single-sequence structure prediction (ESMFold)
phi complex_foldingalphafoldMonomer or multimer structure prediction (AlphaFold2)
phi inverse_foldingproteinmpnnSequence design via inverse folding (ProteinMPNN)
phi esm2Language model log-likelihood scoring and perplexity
phi boltzBiomolecular complex prediction — proteins, DNA, RNA (Boltz-1)
phi filterFull filter pipeline: inverse folding → folding → complex folding → score
phi statusGet the status of a job
phi jobsList recent jobs
phi logsPrint log stream URL for a job
phi cancelCancel a running job
phi scoresDisplay scoring metrics table for a completed filter job
phi downloadDownload output files for a completed job
phi researchRun a biological research query with citations
phi notesView accumulated research notes for a dataset
phi tutorialDownload example datasets and print a getting-started guide

Detailed reference

phi login

Verify your API key and print your identity and connection details.

phi login [--json]
phi login

phi fetch

Download a structure from RCSB PDB or the AlphaFold Database, optionally crop it, save it locally, and optionally upload it to the Dyno cloud.

phi fetch (--pdb ID | --uniprot ID) [crop options] [output options]

Source

FlagDescription
--pdb IDRCSB PDB ID (e.g. 4ZQK)
--uniprot IDUniProt accession — downloads from AlphaFold DB (e.g. Q9NZQ7)

Cropping

FlagDescription
--chain CHAINExtract a single chain (e.g. A)
--residues START-ENDKeep only residues in this range (e.g. 56-290)
--trim-low-confidence PLDDTRemove residues with pLDDT below this threshold. Typical value: 70

Output

FlagDescription
--out FILEOutput PDB path (default: {ID}[_{chain}].pdb in current dir)
--uploadUpload to Dyno cloud after saving — creates a dataset and prints the GCS URI
--name NAMEDataset name label when using --upload
phi fetch --pdb 4ZQK --chain A --residues 56-290 --out target.pdb
phi fetch --uniprot Q9NZQ7 --trim-low-confidence 70 --upload
phi fetch --pdb 7XKJ --chain B --upload --name pd-l1-target

phi upload

Upload PDB, CIF, or FASTA files (or a directory) to create a dataset for batch processing.

phi upload [FILE ...] [--dir DIR] [options]
FlagDescription
FILE ...One or more files to upload (positional)
--dir DIRUpload all matching files in this directory
--file-type TYPEOverride auto-detected file type: pdb, cif, fasta, csv
--run-id IDLabel for this ingest session
--wait / --no-waitPoll until dataset is READY (default: wait)
phi upload --dir ./designs/ --file-type pdb
phi upload binder1.pdb binder2.pdb binder3.pdb
phi upload --dir ./designs/ --no-wait

phi use

Set the active dataset ID, saved to .phi-state.json.

phi use d7c3a1b2-4f3e-11ef-9ab7-0242ac120002

phi datasets

phi datasets [--limit N] [--json]

phi dataset

phi dataset DATASET_ID [--json]

phi ingest-session

Check the status of a background ingest session (useful after phi upload --no-wait).

phi ingest-session SESSION_ID [--json]

phi folding / esmfold

Fast single-sequence structure prediction using ESMFold. Runtime: ~1 min per sequence.

phi folding (--fasta FILE | --fasta-str FASTA | --dataset-id ID) [options]
FlagDefaultDescription
--fasta FILEFASTA file to submit
--fasta-str FASTAFASTA content as a string (for scripting)
--dataset-id IDPre-ingested dataset ID (batch mode)
--recycles N3Recycling iterations
--no-confidenceSkip per-residue pLDDT extraction
phi folding --fasta sequences.fasta
phi folding --dataset-id d7c3a1b2-... --wait --out ./results/
phi folding --fasta-str ">binder1
MKTAYIAKQRQISFVKS..."

phi complex_folding / alphafold

Monomer or multimer structure prediction using AlphaFold2 (ColabFold pipeline). Automatically detects multimer mode from : separators. Runtime: ~8–15 min.

phi complex_folding (--fasta FILE | --fasta-str FASTA | --dataset-id ID) [options]
FlagDefaultDescription
--fasta FILEFASTA file — use : as chain separator for multimer
--dataset-id IDPre-ingested dataset ID (batch mode)
--models 1,2,31,2,3Model numbers to run
--model-type TYPEautoauto, ptm, multimer_v1, multimer_v2, multimer_v3
--msa-tool TOOLmmseqs2MSA algorithm: mmseqs2 or jackhmmer
--template-mode MODEnoneTemplate lookup: none or pdb70
--recycles N6Recycling iterations
--num-seeds N3Number of model seeds
--amberRun AMBER force-field relaxation
phi complex_folding --fasta binder_target.fasta
phi complex_folding --fasta monomer.fasta --amber
phi complex_folding --dataset-id d7c3a1b2-... --wait --out ./af2_results/

phi inverse_folding / proteinmpnn

Design sequences for a protein backbone using ProteinMPNN. Runtime: ~1–2 min.

phi inverse_folding (--pdb FILE | --pdb-gcs URI | --dataset-id ID) [options]
FlagDefaultDescription
--pdb FILEPDB structure file
--pdb-gcs URICloud storage URI to PDB (gs://…)
--dataset-id IDPre-ingested dataset ID (batch mode)
--num-sequences N10Sequences to design
--temperature T0.1Sampling temperature 0–1. Lower = more conservative
--fixed A52,A56Comma-separated residue positions to fix
phi inverse_folding --pdb design.pdb --num-sequences 20
phi inverse_folding --pdb binder.pdb --num-sequences 10 --fixed A52,A56,A63
phi inverse_folding --dataset-id d7c3a1b2-... --num-sequences 4 --wait

phi esm2

Language model scoring with ESM2 — pseudo-log-likelihood (PLL) scores and perplexity for sequence plausibility filtering.

phi esm2 (--fasta FILE | --fasta-str FASTA | --dataset-id ID) [options]
phi esm2 --fasta designed_sequences.fasta --wait

phi boltz

Biomolecular complex structure prediction using Boltz-1 (open-source). Supports proteins, DNA, and RNA.

phi boltz (--fasta FILE | --fasta-str FASTA | --dataset-id ID) [options]
FlagDefaultDescription
--recycles N3Recycling iterations
--no-msaDisable MSA for faster, lower-accuracy prediction
phi boltz --fasta complex.fasta --wait

phi filter

Run the full binder design validation pipeline on a dataset: ProteinMPNN → ESMFold → AlphaFold2 → scoring.

phi filter [--dataset-id ID] [--preset NAME] [threshold flags] [options]

Preset

FlagDescription
--preset default|relaxedApply a named threshold preset. Individual flags override preset values

Threshold overrides

FlagDefaultDescription
--plddt-threshold F0.80ESMFold binder pLDDT lower bound
--ptm-threshold F0.55AlphaFold2 complex pTM lower bound
--iptm-threshold F0.50AlphaFold2 interface pTM lower bound
--ipae-threshold F10.85 ÅAlphaFold2 interface PAE upper bound
--rmsd-threshold F3.5 ÅBinder backbone RMSD upper bound

Pipeline options

FlagDefaultDescription
--num-sequences N4ProteinMPNN sequences per design
--num-recycles N3AlphaFold2 recycling iterations
--msa-tool TOOLsingle_sequencesingle_sequence (recommended for de novo binders), mmseqs2, jackhmmer
--waitonPoll until pipeline completes
--out DIRDownload results when done
--allWhen --out is set, download all artifact types
phi filter --preset default --wait
phi filter --dataset-id d7c3a1b2-... --plddt-threshold 0.75 --iptm-threshold 0.45 --wait
phi filter --preset relaxed --wait --out ./results/
phi filter --preset default --wait --out ./results/ --all

phi status

phi status JOB_ID [--json]

phi jobs

FlagDefaultDescription
--limit N20Number of jobs to show
--status STATUSFilter: pending, running, completed, failed, cancelled
--job-type TYPEFilter by job type (e.g. esmfold, design_pipeline)
--jsonPrint raw JSON
phi jobs
phi jobs --status running
phi jobs --limit 50 --job-type design_pipeline

phi logs

phi logs JOB_ID [--follow]

phi cancel

phi cancel JOB_ID

phi scores

Display the scoring metrics table for a completed filter job.

FlagDefaultDescription
JOB_IDcachedJob ID (default: last cached job)
--top N20Show top-N candidates ranked by score
--out FILESave scores CSV to file
--jsonOutput raw JSON
phi scores
phi scores --top 50 --out scores.csv

phi download

Download all output files for a completed job — structures, scores CSV, and raw score JSONs.

FlagDefaultDescription
JOB_IDcachedJob ID (default: last cached job)
--out DIR./resultsOutput directory
--allDownload all artifact types including MSA files and archives
phi download --out ./results/
phi download --out ./results/ --all
phi download cb4553f5-... --out ./run-42/

phi research

Run a biological research query against PubMed, UniProt, and PDB. Synthesises a report with citations. Runtime: ~2–5 min.

FlagDefaultDescription
--question QUESTION(required)Research question (e.g. "What are binding hotspots for PD-L1?")
--target TARGETProtein or gene name to focus the search (e.g. PD-L1, KRAS)
--databases LISTpubmed,uniprot,pdbComma-separated databases to query
--max-papers N20Maximum PubMed papers to retrieve
--structuresInclude related PDB structures in the report
--context-file FILEPath to a prior research.md — prepended as context
--dataset-id IDAssociate notes with a dataset and sync to cloud storage
--notes-file FILE./research.mdLocal append-only notes file
--no-saveSkip saving the report to the local notes file
phi research --question "What are the known binding hotspots for PD-L1?"

phi research \
  --question "What is the structure and function of EGFR domain III?" \
  --target EGFR --structures --dataset-id d7c3a1b2-...

# Build on a prior research session
phi research \
  --question "Which of these hotspots are most druggable?" \
  --context-file ./research.md

phi notes

phi notes DATASET_ID [--out PATH] [--json]
phi notes d7c3a1b2-... --out ./campaign-notes.md

phi tutorial

Download example datasets from the API and print an interactive getting-started guide. Ideal for first-time users to explore the filtering pipeline with real data.

phi tutorial

Filter presets

phi filter --preset applies a named set of quality-control thresholds across the full validation pipeline. Override any individual threshold alongside a preset.

MetricdefaultrelaxedDescription
pLDDT≥ 0.80≥ 0.80ESMFold per-residue confidence (0–1)
pTM≥ 0.55≥ 0.45Global TM-score proxy from ESMFold
ipTM≥ 0.50≥ 0.50Interface pTM from AF2 multimer (0–1)
iPAE≤ 10.85 Å≤ 12.4 ÅAF2 interface predicted aligned error
RMSD≤ 3.5 Å≤ 4.5 ÅBackbone RMSD vs. reference design
phi filter --preset default --plddt-threshold 0.75 --iptm-threshold 0.45

The single_sequence MSA mode (default for phi filter) is recommended for de novo designed binders — they have no natural homologs, so MSA adds noise rather than signal.

Workflows

Filter a batch of binder candidates

The most common workflow — upload your designs and run the full scoring pipeline in one step.

# 1. Upload your binder candidate PDB or FASTA files
phi upload --dir ./designs/ --file-type pdb

# 2. Run the full filter pipeline (ProteinMPNN → ESMFold → AlphaFold2 → score)
phi filter --preset default --wait --out ./results/

# 3. Review ranked scores
phi scores --top 30

Validate a batch of sequences

Run individual pipeline steps when you need custom control — e.g. to reuse existing folded structures.

# Upload FASTA sequences
phi upload sequences.fasta

# Structure prediction
phi folding --dataset-id d7c3a1b2-... --wait

# Score with ESM2
phi esm2 --dataset-id d7c3a1b2-... --wait

# Download results
phi download --out ./validation/

Research-guided filtering campaign

phi research \
  --question "What are the binding hotspots of PD-L1 for therapeutic binders?" \
  --target PD-L1 --structures --dataset-id d7c3a1b2-...

phi notes d7c3a1b2-...