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

# Protein Length

> Evaluate whether protein length falls within acceptable range

<div class="page-hero">
  <img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/constraint/protein-length/hero.png" alt="Protein Length" />
</div>

<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" />

<div class="tool-tab-bar entity-source-bar"><span class="tool-tab-wrap"><span class="tool-tab badge-source entity-source-tab"><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</span></span></div>

<a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_quality/protein_length_constraint.py#L63" target="_blank" class="tab-panel source-panel entity-source-panel">
  <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\_quality/protein\_length\_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: 2 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></span></div>
Evaluate whether protein sequence lengths fall within an acceptable range.

This constraint function checks if protein sequences have lengths within a
specified range, penalizing sequences that are too short or too long. This
is useful for filtering out spurious ORF predictions. Penalties scale linearly
with the distance outside the acceptable range.

## 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">ProteinLengthConfig</span><a href="https://github.com/evo-design/proto-language/blob/d3b7822f74ea64747cc751a3b2ab1aa6b799ac47/proto_language/constraint/protein_quality/protein_length_constraint.py#L11" 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 object for protein length constraint.

  This class defines configuration parameters for evaluating whether protein
  sequences fall within an acceptable length range. Length constraints are
  useful for filtering proteins that are too short or too long. The penalty scales
  linearly with the distance outside the acceptable range. For example, a protein
  10 amino acids below `min_length` receives a proportionally smaller penalty than
  one 50 amino acids below.

  <ParamField path="min_length" type="integer" required>
    Minimum acceptable protein length below which sequences are penalized
  </ParamField>

  <ParamField path="max_length" type="integer" required>
    Maximum acceptable protein length above which sequences are penalized
  </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>

  One result per sequence. A score of 0.0 indicates
  length is within the acceptable range \[min\_length, max\_length] and
  higher values indicate greater deviation from the acceptable range.
  Penalties scale linearly: a sequence 10 amino acids outside the range
  receives half the penalty of one 20 amino acids outside. `metadata` carries:

  * `protein_length`: Integer length of the protein sequence in amino acids
</div>

## Usage

Evaluating protein length within range:

```python python icon="python" theme={null}
>>> from proto_language.core import Sequence, SequenceType
>>> config = ProteinLengthConfig(min_length=10, max_length=500)
>>> seq = Sequence("MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSF", "protein")
>>> results = protein_length_constraint([(seq,)], config)
>>> print(results[0].score)  # 0.0
>>> print(results[0].metadata["protein_length"])  # 37
```

## Metadata

| Property        | Value                       |
| --------------- | --------------------------- |
| Key             | `protein-length`            |
| Function        | `protein_length_constraint` |
| Category        | `protein_quality`           |
| Mode            | `discrete`                  |
| Uses GPU        | `False`                     |
| Supported Types | `protein`                   |
