---
title: Boltz-2 results
description: 'mmCIF and PDB artifacts, the pLDDT and iptm confidence fields, and affinity_score as log10(IC50 in µM) — lower is stronger, skipped above 128 heavy atoms.'
---

A finished Boltz-2 job returns the predicted complex as both an mmCIF and a PDB artifact, a set of confidence scores at three levels (residue, chain, interface), and — if you asked for it and the ligand was small enough — a predicted affinity value and a binder/non-binder probability.

## Structure artifacts

| Field | What it holds |
|---|---|
| `structure_mmcif_uri` | The predicted complex in mmCIF format |
| `structure_pdb_uri` | The same complex in PDB format |
| `pde_matrix_uri` | The predicted distance-error matrix, when one was generated |

A `prediction_results` JSON artifact carries the full result object alongside them.

## Confidence fields

| Field | Level | Meaning |
|---|---|---|
| `chain_plddt` | per residue, keyed by chain | pLDDT confidence for every residue of each chain |
| `chain_ptm` | per chain | That chain's pTM |
| `chain_iptm` | per chain | Interface pTM for that chain against the others; empty for a single-chain prediction |
| `complex_iptm` | whole complex | Overall interface pTM, 0–1 |
| `confidence_score`, `ptm`, `complex_plddt`, `complex_iplddt`, `protein_iptm`, `ligand_iptm`, `pair_chains_iptm` | whole complex | The upstream confidence block, passed through as reported |

Read them in this order: pLDDT tells you whether each chain's fold is trustworthy, and the iptm family tells you whether the **interface between** chains is trustworthy. A complex can have well-folded chains and an unreliable interface, which is the failure mode that matters for a binding question.

`single_sequence_mode: true` means the protein chains ran without an MSA. Treat confidence numbers from a single-sequence run as weaker than the same numbers from an MSA run, and never compare the two directly.

Also returned: `entity_types` (the distinct chain types in the complex), `num_chains`, the `num_recycling_steps` / `sampling_steps` / `output_format` actually used, and `processing_time_seconds`.

## The affinity value

When `predict_affinity` was on and produced a result:

| Field | Value |
|---|---|
| `affinity_score` | The predicted affinity, as log10(IC50) with IC50 in µM |
| `affinity_score_unit` | `log10(IC50 [uM])`; `null` when there is no `affinity_score` |
| `affinity_probability_binary` | Boltz's predicted likelihood that the ligand is a binder, 0–1, from the affinity ensemble. Upstream intends it for separating binders from decoys. No cut-off is applied; `null` (never `0`) when affinity did not run |
| `affinity_pred_value1`, `affinity_probability_binary1`, `affinity_pred_value2`, `affinity_probability_binary2` | The same two quantities from each of the two models in the affinity ensemble, under Boltz's own names. Absent when Boltz did not write them |

So −1 corresponds to a predicted IC50 of 0.1 µM and +1 to 10 µM. **Lower is stronger.** For `affinity_probability_binary`, higher means more likely to bind. The two heads answer different questions — a ranking within a series versus binder or non-binder — and need not agree; see [translatability](/docs/boltz2/translatability).

> This is a model prediction, not a measurement, and it is not a docking score either. The quantity it is trying to predict is a measured IC50, so the only meaningful validation is against measured IC50 or Kd values on your own series — not against DiffDock confidence or an MM-GBSA energy, which are different quantities on different scales.

If affinity was requested but the ligand exceeded the 128-heavy-atom ceiling, the result carries `affinity_skipped: true` and a note explaining it. The structure is still valid; there is simply no affinity number for that ligand.

## What is not returned

- **No pose ranking.** Boltz-2 returns one predicted complex per job, not a ranked pose ensemble. If you want several candidate placements of a ligand in a known receptor, that is [DiffDock](/docs/diffdock).
- **No RMSD to a reference.** There is no reference-structure input, so nothing is measured against a known pose. Compare against an experimental structure yourself.
- **No physical-validity check.** Inspect the geometry of a predicted ligand pose before you build on it. Published evaluation found that a substantial minority of predicted ligands came back with saturation or stereochemistry that disagreed with the input SMILES, so check the returned molecule against your own SMILES as well as the pose. See [translatability](/docs/boltz2/translatability).

## Read next
