Quick example
Methods
.fold()
Predict the 3D structure of one or more protein sequences.
A single amino acid sequence string or a list of sequences. Use
":" to separate chains in a multimer (e.g., "CHAIN_A:CHAIN_B"). Chai-1 currently supports a single batch entry.Per-call configuration overrides. Only dynamic config keys can be set here — static keys raise
ValueError. See Configuration.Chai1Output (see Output below)
Output
TheChai1Output dataclass returned by .fold().
Always included
Prediction metadata with timing information. See PredictionMetadata.
List of Biotite
AtomArray objects. Always generated.Confidence metrics
Predicted aligned error matrices (one per diffusion sample).
Predicted distance error matrices (one per diffusion sample).
Per-residue pLDDT scores (one array per diffusion sample).
Complex pTM scores.
Interface pTM scores.
Per-chain-pair interface pTM scores.
Structure representations
mmCIF-formatted structure strings. Only generated when
include_fields contains "cif" or "*".Configuration
These keys can be set viaconfig={} at initialization or options={} per call (unless marked static).
| Key | Type | Default | Static | Description |
|---|---|---|---|---|
device | str | "cuda:0" | Yes | GPU device identifier |
num_trunk_recycles | int | 3 | No | Number of trunk recycling iterations |
num_diffn_timesteps | int | 200 | No | Number of diffusion timesteps |
num_diffn_samples | int | 5 | No | Number of diffusion samples to generate |
num_trunk_samples | int | 1 | No | Number of trunk samples |
use_esm_embeddings | bool | False | No | Whether to use ESM embeddings as input features |
use_msa_server | bool | False | No | Whether to query an MSA server for multiple sequence alignments |
use_templates_server | bool | False | No | Whether to query a templates server for structural templates |
include_fields | list[str] | None | None | No | Which output fields to return. Use ["cif"] to include CIF strings. Use ["*"] for everything |
Multimer prediction
Separate chains with":" in the sequence string:
Chai-1 currently supports only a single batch entry (one sequence or one multimer). If you pass a list of sequences, it must contain exactly one element.
