> ## Documentation Index
> Fetch the complete documentation index at: https://proto.evodesign.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Boltz2 Binding Strength

> Evaluate protein-protein, protein-ligand, and protein-nucleic-acid (DNA/RNA) binding (e.g. a repressor on a DNA operator) using Boltz2 structure prediction

<div class="page-hero">
  <img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/constraint/boltz2-binding-strength/hero.png" alt="Boltz2 Binding Strength" />
</div>

<Note>
  **License:** Boltz-2 is open source and free for academic and commercial use under an MIT license. Please refer to [the license](https://github.com/jwohlwend/boltz/blob/main/LICENSE) for full terms.
</Note>

<p class="entity-disclaimer">This constraint is open source. Any third-party models, product names, or trademarks referenced are the property of their respective owners, and Proto is not affiliated with them.</p>

<hr class="entity-rule" />

<input type="radio" name="tab-constraint-boltz2-binding-strength" id="none-constraint-boltz2-binding-strength" class="tab-radio-input" />

<input type="radio" name="tab-constraint-boltz2-binding-strength" id="tools-constraint-boltz2-binding-strength" class="tab-radio-input" defaultChecked />

<input type="radio" name="tab-constraint-boltz2-binding-strength" id="source-constraint-boltz2-binding-strength" class="tab-radio-input" />

<input type="radio" name="tab-constraint-boltz2-binding-strength" id="cite-constraint-boltz2-binding-strength" class="tab-radio-input" />

<div class="tool-tab-bar"><span class="tool-tab-wrap"><label for="tools-constraint-boltz2-binding-strength" class="tool-tab tab-open badge-tools"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="7" height="7" x="3" y="3" rx="1" /><rect width="7" height="7" x="14" y="3" rx="1" /><rect width="7" height="7" x="14" y="14" rx="1" /><rect width="7" height="7" x="3" y="14" rx="1" /></svg> Tools Used</label><label for="none-constraint-boltz2-binding-strength" class="tool-tab tab-close badge-tools"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="7" height="7" x="3" y="3" rx="1" /><rect width="7" height="7" x="14" y="3" rx="1" /><rect width="7" height="7" x="14" y="14" rx="1" /><rect width="7" height="7" x="3" y="14" rx="1" /></svg> Tools Used</label></span> <span class="tool-tab-wrap"><label for="source-constraint-boltz2-binding-strength" class="tool-tab tab-open badge-source"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</label><label for="none-constraint-boltz2-binding-strength" class="tool-tab tab-close badge-source"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</label></span> <span class="tool-tab-wrap"><label for="cite-constraint-boltz2-binding-strength" class="tool-tab tab-open badge-cite"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Cite</label><label for="none-constraint-boltz2-binding-strength" class="tool-tab tab-close badge-cite"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Cite</label></span></div>

<a href="/docs/tools/structure-prediction/boltz2" class="tab-panel tools-panel tools-panel-single" data-tab="tools-constraint-boltz2-binding-strength">
  <div class="tools-single-card">
    <img noZoom src="https://proto-bio.github.io/proto-assets/images/tool/boltz2/social.png" alt="" loading="lazy" />
  </div>

  <span class="panel-goto-btn tools-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg> Go to Tool Page</span></span>
</a>

<a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_structure/boltz_binding_strength_constraint.py#L216" target="_blank" class="tab-panel source-panel" data-tab="source-constraint-boltz2-binding-strength">
  <div class="source-info">
    <img noZoom src="https://github.com/evo-design.png?size=40" class="source-avatar" width="36" height="36" />

    <span class="source-path">evo-design/proto-language<span class="source-subpath">/proto\_language/constraint/protein\_structure/boltz\_binding\_strength\_constraint.py</span></span>
  </div>

  <span class="panel-goto-btn source-goto-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" /></svg> View source</span></span>
</a>

<div class="tab-panel cite-panel" data-tab="cite-constraint-boltz2-binding-strength">
  <div class="cite-code-wrap">
    ```bibtex theme={null}
    @article{passaro2025boltz2,
      title={Boltz-2: Towards Accurate and Efficient Binding Affinity Prediction},
      author={Passaro, Saro and Corso, Gabriele and Wohlwend, Jeremy and Reveiz, Mateo and Thaler, Stephan and Somnath, Vignesh Ram and Getz, Noah and Portnoi, Tally and Roy, Julien and St{\"a}rk, Hannes and Kwabi-Addo, David and Beaini, Dominique and Jaakkola, Tommi and Barzilay, Regina},
      journal={bioRxiv},
      year={2025},
      doi={10.1101/2025.06.14.659707},
      publisher={Cold Spring Harbor Laboratory}
    }

    @article{wohlwend2024boltz1,
      title={Boltz-1: Democratizing Biomolecular Interaction Modeling},
      author={Wohlwend, Jeremy and Corso, Gabriele and Passaro, Saro and Reveiz, Mateo and Leidal, Ken and Swanson, Wojtek and Turnbull, Robert and Shuaibi, Muhammed and Ahdritz, Gustaf and Getz, Gad and Jaakkola, Tommi and Barzilay, Regina},
      journal={bioRxiv},
      year={2024},
      doi={10.1101/2024.11.19.624167},
      publisher={Cold Spring Harbor Laboratory}
    }
    ```
  </div>

  <span class="panel-goto-btn cite-copy-btn"><span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z" /><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z" /></svg> Copy citation</span></span>
</div>

<div class="entity-contributors"><span class="entity-contributors-label">Constraint contributors</span><span class="entity-contributors-people"><a class="entity-contributor" href="https://github.com/dguo8412" target="_blank" rel="noopener" title="dguo8412: 4 commits"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/46211285?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">dguo8412</span></a><a class="entity-contributor" href="https://github.com/bviggiano" target="_blank" rel="noopener" title="bviggiano: 1 commit"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/21143637?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">bviggiano</span></a></span></div>
Evaluate binding strength and quality using Boltz structure prediction.

Boltz predicts protein-protein, protein-ligand, protein-DNA, and protein-RNA
complex structures and returns confidence metrics (iptm, iplddt, ipde, plddt,
ptm, confidence\_score). Each metric is scored as a penalty in `[0.0, 1.0]`
against configurable targets/tolerances and combined via weighted averaging;
default weights are chosen by complex type.

## API Reference

<div class="api-model-section api-model-static api-config-section">
  <div class="api-model-header"><span class="api-model-badge api-config-badge">Config</span><span class="api-model-name">BoltzBindingStrengthConfig</span><a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_structure/boltz_binding_strength_constraint.py#L49" target="_blank" class="func-table-btn func-source-btn api-model-source"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6" /><polyline points="8 6 2 12 8 18" /></svg> Source</a></div>

  Configuration for Boltz binding strength constraint.

  This class defines configuration parameters for evaluating protein-protein,
  protein-ligand, and protein-nucleic-acid (DNA/RNA) binding using Boltz, a
  biomolecular structure prediction model. A common use case is scoring a
  protein occupying a nucleic-acid target (e.g. a repressor bound to a DNA
  operator) via interface confidence. Boltz predicts complex structures and
  provides confidence metrics for binding quality, interface accuracy, and
  overall structure reliability. The constraint evaluates these metrics against
  target values to assess binding strength and quality.

  The constraint uses a penalty-based scoring system where each metric is evaluated
  against its target value and tolerance. Metrics are classified as "higher is better"
  (e.g., interface confidence scores) or "lower is better" (e.g., predicted distance
  errors). Penalties are combined using weighted averages, with default weights
  chosen by complex type (monomer, protein-ligand, or multi-chain — the latter
  covering both protein-protein and protein-nucleic-acid complexes).

  <Note>
    **Metric interpretation:**

    * **iptm/ligand\_iptm/protein\_iptm**: Interface confidence (0-1). Higher = better
      binding prediction. Values >0.8 indicate confident binding interfaces.
    * **complex\_iplddt**: Interface per-residue confidence (0-1). Higher = more
      reliable interface residue predictions.
    * **complex\_plddt**: Overall structure confidence (0-1). Similar to ESMFold pLDDT.
    * **ptm**: Overall structural accuracy (0-1). Similar to ESMFold pTM.
    * **complex\_ipde/complex\_pde**: Predicted distance errors in Ångströms. Lower =
      more accurate structure. Values \<3 Å indicate high accuracy.
    * **confidence\_score**: Boltz's aggregate confidence combining multiple factors.
  </Note>

  <ParamField path="desired_higher" type="object" default="{'iptm': 0.9, 'ligand_iptm': 0.8, 'protein_iptm': 0.85, 'complex_iplddt': 0.85, 'complex_plddt': 0.8, 'ptm': 0.7, 'confidence_score': 0.85}">
    Target values for 'higher is better' metrics.
  </ParamField>

  <ParamField path="desired_lower" type="object" default="{'complex_ipde': 2.0, 'complex_pde': 2.0}">
    Target values for 'lower is better' metrics.
  </ParamField>

  <ParamField path="tol_higher" type="object" default="{'iptm': 0.05, 'ligand_iptm': 0.1, 'protein_iptm': 0.07, 'complex_iplddt': 0.1, 'complex_plddt': 0.15, 'ptm': 0.15, 'confidence_score': 0.1}">
    Tolerances for higher-is-better metrics; once a value falls this far below target, penalty hits 1.0.
  </ParamField>

  <ParamField path="tol_lower" type="object" default="{'complex_ipde': 2.0, 'complex_pde': 3.0}">
    Tolerances for lower-is-better metrics (Å); once exceeding target by this much, penalty hits 1.0.
  </ParamField>

  <ParamField path="weights" type="object">
    Weights for combining penalties
  </ParamField>

  <ParamField path="include_confidence_score" type="boolean" default="True">
    Whether to include confidence\_score in penalty calculation (adds weight 0.10)
  </ParamField>

  <ParamField path="return_component" type="enum" default="total_penalty">
    Component to return: 'total\_penalty' (weighted combination) or specific metric name

    Options: `total_penalty`, `iptm`, `ligand_iptm`, `protein_iptm`, `complex_iplddt`, `complex_plddt`, `complex_pde`, `complex_ipde`, `confidence_score`, `ptm`
  </ParamField>

  <ParamField path="boltz2_config" type="Boltz2Config">
    Boltz2 configuration for structure prediction.
  </ParamField>
</div>

<div class="api-model-section api-model-static api-output-section">
  <div class="api-model-header"><span class="api-model-badge api-output-badge">Returns</span><span class="api-model-name">ConstraintOutput</span></div>

  Per-complex score in `[0.0, 1.0]` (0 = perfect
  binding). Predicted Boltz structure is attached to the first slot of
  each complex. `metadata` carries `boltz2_binding` (a list of
  dictionaries, one per evaluation):

  * `penalty`: Float overall constraint score (0.0-1.0)
  * `metrics`: Dictionary of all raw Boltz metrics (iptm, iplddt, etc.)
  * `penalties`: Dictionary of individual metric penalties before weighting
</div>

## Usage

```python python icon="python" theme={null}
from proto_language.core import Constraint
from proto_language.constraint import boltz_binding_strength_constraint, BoltzBindingStrengthConfig

constraint = Constraint(
    inputs=[segment],
    function=boltz_binding_strength_constraint,
    function_config=BoltzBindingStrengthConfig(
        # Configure parameters here
    ),
)

scores = constraint.evaluate()
```

## Metadata

| Property        | Value                               |
| --------------- | ----------------------------------- |
| Key             | `boltz2-binding-strength`           |
| Function        | `boltz_binding_strength_constraint` |
| Category        | `protein_structure`                 |
| Mode            | `discrete`                          |
| Uses GPU        | `True`                              |
| Supported Types | `dna`, `rna`, `protein`, `ligand`   |
