Skip to content

How to use Pandora?

Quickstart is a single walkthrough of one typical workflow. This section is the per-component reference underneath it — one page per component, covering every function's signature, edge cases, and (where one exists) the equivalent pandora CLI subcommand.

Most pages open with a short setup block (parse a fixture, canonicalise it) that the rest of the page's examples build on — skim that first if you're jumping straight to a page rather than reading in order.

Library vs. CLI

Every operation that a pandora subcommand wraps is shown twice:

Call the Python function directly — for scripting the pipeline in
one process, or when you need something a subcommand doesn't
expose (a keyword argument, an in-memory object).
The equivalent pandora <subcommand> invocation — for running a
stage from the shell over a directory of files, chaining it with
the next stage's --input-dir.

Both call the same underlying function; the CLI just reads/writes files where the library form passes objects in memory. A handful of steps (loading a policy, filtering ligands standalone, reshaping records) have no CLI equivalent — those pages say so inline instead of showing an empty tab.

Pages

Page Covers
Ingestion Fetch mmCIF files from PDBe/PDB (with on-disk caching), load a canonicalisation policy YAML
Canonicalisation Normalize a parsed Structure against a policy — chain IDs, altlocs, entities, ligands, and more
Metadata Extract source-backed entry/quality/taxonomy/entity/ligand/UniProt records — library-only, no CLI subcommand
Annotation Derived per-entry/pairwise layers: structure counts, ligand contacts, chain interfaces, sequence identity
Datasets Curate and deduplicate a batch, reshape a canonical Structure into flat Chain/Residue/Interface records
Similarity All-vs-all sequence/structure similarity, connected-component clustering, leakage-safe train/val/test partitioning
Export Write a Structure (or the records from Datasets) back to mmCIF, JSON, or Parquet
Provenance Assemble a per-structure ProvenanceBundle or dataset-wide DatasetManifest, and replay one from scratch

See Policies for every canonicalisation/curation policy field, and Functions / Schemas for generated API reference.