> ## 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.

# Structure pTM Score

> Evaluate structure quality using predicted TM score

<div class="page-hero">
  <img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/constraint/structure-ptm/hero.png" alt="Structure pTM Score" />
</div>

<Note>
  **License:** This constraint can use multiple tools, each under its own license. See the **Tools Used** tab and each tool's page for license details.
</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-structure-ptm" id="none-constraint-structure-ptm" class="tab-radio-input" />

<input type="radio" name="tab-constraint-structure-ptm" id="tools-constraint-structure-ptm" class="tab-radio-input" defaultChecked />

<input type="radio" name="tab-constraint-structure-ptm" id="source-constraint-structure-ptm" class="tab-radio-input" />

<div class="tool-tab-bar"><span class="tool-tab-wrap"><label for="tools-constraint-structure-ptm" 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-structure-ptm" 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-structure-ptm" 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-structure-ptm" 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></div>

<a href="/docs/tools/structure-prediction/overview" class="tab-panel tools-panel tools-panel-single" data-tab="tools-constraint-structure-ptm">
  <div class="tools-single-card tools-single-collage"><div class="tool-catalog-tile-collage"><div class="tool-catalog-tile-cell">  <img noZoom src="https://proto-bio.github.io/proto-assets/images/tool/esmfold/carousel.png" alt="" loading="lazy" /></div><div class="tool-catalog-tile-cell">  <img noZoom src="https://proto-bio.github.io/proto-assets/images/tool/esmfold2/carousel.png" alt="" loading="lazy" /></div><div class="tool-catalog-tile-cell">  <img noZoom src="https://proto-bio.github.io/proto-assets/images/tool/alphafold3/carousel.png" alt="" loading="lazy" /></div><div class="tool-catalog-tile-cell">  <img noZoom src="https://proto-bio.github.io/proto-assets/images/tool/boltz2/carousel.png" alt="" loading="lazy" /></div></div><div class="tool-catalog-tile-label"><span>Structure Prediction · 7 tools</span></div></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 Category</span></span>
</a>

<a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_structure/structure_confidence_constraint.py#L304" target="_blank" class="tab-panel source-panel" data-tab="source-constraint-structure-ptm">
  <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/structure\_confidence\_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="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: 6 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: 2 commits"><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 structure quality using predicted TM-score (pTM).

pTM (predicted Template Modeling score) measures overall structural
accuracy of the predicted model. Values range from 0.0 to 1.0, where
higher values indicate better global fold quality.

This constraint returns `1.0 - ptm`, so lower scores indicate
better predicted structure quality.

**Supported tools**: ESMFold, ESMFold2, AlphaFold3, Boltz2, Chai1, Protenix, AlphaFold2, AlphaFold2 binder

## 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">StructureBasedConstraintConfig</span><a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_structure/structure_constraint_config.py#L320" 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>

  Base configuration for constraints using structure prediction tools.

  This base class standardizes how structure prediction tools and their
  configurations are specified across all structure-based constraints.
  Each tool has its own dedicated config field.

  Subclasses can optionally restrict which tools are supported by overriding
  the structure\_tool field with a narrower Literal type.

  <ParamField path="structure_tool" type="enum" default="esmfold">
    Predictor: esmfold/esmfold2/alphafold3/boltz2/chai1/protenix/alphafold2/alphafold2\_binder.

    Options: `esmfold`, `esmfold2`, `alphafold3`, `boltz2`, `chai1`, `protenix`, `alphafold2`, `alphafold2_binder`
  </ParamField>

  <ParamField path="esmfold_config" type="ESMFoldConfig">
    Configuration for ESMFold structure prediction.
  </ParamField>

  <ParamField path="esmfold2_config" type="ESMFold2Config">
    Configuration for ESMFold2 structure prediction.
  </ParamField>

  <ParamField path="alphafold3_config" type="AlphaFold3Config">
    Configuration for AlphaFold3 structure prediction.
  </ParamField>

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

  <ParamField path="chai1_config" type="Chai1Config">
    Configuration for Chai1 structure prediction.
  </ParamField>

  <ParamField path="protenix_config" type="ProtenixConfig">
    Configuration for Protenix structure prediction.
  </ParamField>

  <ParamField path="alphafold2_config" type="AlphaFold2Config">
    Configuration for the general AlphaFold2 multimer structure predictor.
  </ParamField>

  <ParamField path="alphafold2_binder_config" type="AlphaFold2BinderStructureConfig">
    Configuration for the AF2 binder-design backend.
  </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-proposal score and `ptm` / `pdb_output` /
  `structure_tool` metadata; predicted Structure attaches to slot 0.
</div>

## Usage

Programming a homo-dimer with ESMFold:

```python python icon="python" theme={null}
>>> from proto_language.core import Segment
>>> protomer = Segment(length=20, sequence_type="protein")
>>> esmfold_plddt = Constraint(
...     inputs=[protomer, protomer],
...     function=structure_ptm_constraint,
...     function_config={"structure_tool": "esmfold"},
... )
```

## Metadata

| Property        | Value                             |
| --------------- | --------------------------------- |
| Key             | `structure-ptm`                   |
| Function        | `structure_ptm_constraint`        |
| Category        | `protein_structure`               |
| Mode            | `discrete`                        |
| Uses GPU        | `True`                            |
| Supported Types | `protein`, `rna`, `dna`, `ligand` |
