Odin-Multi separates the fixed protein context, the objective applied to that context, the optimization schedule shared by all contexts, and the independent reevaluation runtime.
| Layer | Purpose | Example |
|---|---|---|
| Target settings | PDB, chains, hotspots, unique context name | settings_target/specificity_target.json |
| Context loss | role, gradient scale, structural losses, MPNN losses | settings_loss/target.json |
| General settings | binder length and shared optimization schedule | settings_advanced/general.json |
| Evaluator settings | AF3 or AF2 reevaluation runtime | settings_reevaluation/af3.example.json |
Repeat --context SETTINGS LOSS in the desired context order. The first
context must use a loss file with role target. Supply exactly one
--advanced file when creating a run.
A minimal target settings file is:
{
"binder_name": "my_target",
"starting_pdb": "/absolute/path/to/target.pdb",
"chains": "A",
"target_hotspot_residues": "A10,A14-18"
}binder_nameis the unique, filesystem-safe name used in plots and result tables.starting_pdbmay be absolute or relative to the working directory or the settings file.chainsis a comma-separated list of target chains in the PDB.target_hotspot_residuesis a comma-separated set of residues and ranges, ornullwhen no hotspot is used.
The target settings file does not contain role or binder lengths; those
belong to the paired context loss file and shared general settings,
respectively.
Start from the complete shipped loss files:
settings_loss/target.jsonsettings_loss/offtarget.json
The central target fields include:
{
"role": "target",
"gradient_weight": 1.0,
"weights_pae_inter": 0.1,
"weights_con_inter": 1.0,
"weights_iptm": 0.05,
"weights_mpnn_structure_confidence": 0.0,
"weights_mpnn_sequence_kl": 0.0,
"weights_mpnn_autoregressive_ce": 1.0
}The corresponding off-target loss file uses explicit repulsive signs and clipped loss thresholds:
{
"role": "offtarget",
"gradient_weight": 0.3,
"weights_pae_inter": -0.1,
"weights_con_inter": -1.0,
"weights_iptm": -0.05,
"clip": {
"i_pae": {"below": 0.35},
"i_con": {"below": 3.5},
"i_ptm": {"above": 0.3}
},
"weights_mpnn_structure_confidence": 0.0,
"weights_mpnn_sequence_kl": 0.0,
"weights_mpnn_autoregressive_ce": -1.0,
"mpnn_interface_only": true
}These are excerpts for orientation. Use the complete shipped JSON files as the starting point. Their weights and thresholds are initial settings to tune for a particular target set, not universal cutoffs.
clip is optional and valid only for off-target contexts. above or
below describes where the loss remains active; omitting a term leaves its
ordinary, unclipped loss unchanged.
The i_pae clipping value is in the normalized ColabDesign optimization
scale, where interface PAE is divided by 31. Thus i_pae.below: 0.35
corresponds to an interface PAE of approximately 10.85 Å. Reevaluation,
selection output, plots, and summary tables report interface PAE directly in
ångströms. Do not copy an ångström cutoff such as 7.5 into clip.i_pae;
divide it by 31 first.
| Clip term | Required direction | Scale and behavior |
|---|---|---|
i_pae |
below |
normalized interface-PAE loss; hard gate |
i_con |
below |
ColabDesign interface-contact loss; hard gate |
i_ptm |
above |
iPTM confidence on a 0–1 scale; hard gate |
ptm_energy |
below |
pTM-energy loss; hard gate; requires use_ptm_energy_craft_loss: true |
contact_max |
above |
contact probability on a 0–1 scale; row-wise hinge |
The published hotspot-contact objective is configured with a positive weight
and a contact_max clip:
{
"inter_contact_distance": 20.0,
"weights_contact_max": 0.05,
"clip": {
"contact_max": {"above": 0.3}
}
}It uses the configured off-target hotspots when present and inherits its
distance cutoff from inter_contact_distance. Legacy *_threshold,
use_contact_max_loss, and nested contact_max settings are rejected with
a migration message.
role classifies a context as "target" or "offtarget". Scaled
gradients from all target contexts are summed to form the target consensus.
Each off-target gradient is then PCGrad-projected against that consensus before
being added. gradient_weight controls the magnitude of each context's
contribution.
The role does not reverse loss signs. Configure off-target repulsion explicitly
through loss weights and, where desired, clip settings. Inverse confidence
objectives normally use negative weights; direct penalties such as
contact_max use positive weights. Odin-Multi also uses the role to validate
MPNN weight signs, include only targets in early stopping, distinguish targets
from off-targets during iteration selection, and label trajectory plots and
evaluation results.
The canonical presets enable only autoregressive cross-entropy: +1.0 for
targets and -1.0 for off-targets. Structure-conditioned ProteinMPNN NLL and
sequence KL divergence remain available as publication or ablation objectives
but are disabled with zero weights. Every enabled MPNN objective must agree
with the context role: positive for targets and non-positive for off-targets.
mpnn_interface_only can restrict enabled off-target MPNN objectives to
interface positions.
For cross-reactive design, pair every context with a target loss file. For specificity design, place at least one target first, followed by one or more off-target loss files.
settings_advanced/general.json is the canonical shared configuration. The
most important fields are:
| Field | Meaning |
|---|---|
lengths |
inclusive binder-length bounds; [80, 80] fixes length 80 |
af_params_dir |
AF2 parameter directory; an empty value uses the repository root, where the installer creates params/ |
use_multimer_design |
selects the AF2 design model family |
num_recycles_design |
recycles in ordinary design steps |
design_algorithm |
staged optimization algorithm |
soft_iterations, temporary_iterations, hard_iterations, greedy_iterations |
optimization schedule |
use_early_stopping |
enables target-only early-stopping checks |
omit_AAs |
amino acids excluded during design |
The run copies every input configuration and PDB into its 00_inputs/
directory at creation time. Later edits to the source JSON files do not change
that run; start a new run directory to change immutable inputs.
AlphaFold 3 and AlphaFold 2 reevaluation settings are independent from the design configuration. Copy an example file before adding local paths:
settings_reevaluation/af3.example.jsonconfigures an external AF3 Python, runner, model directory, database directory, reusable target cache, seeds, and extra runner flags.settings_reevaluation/af2.example.jsonconfigures the installed AF2 parameters, model indices, seeds, recycles, and target masking.
See the installation and reevaluation instructions for the corresponding commands.