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

# PARADE

> PARADE (Prediction And RAtional DEsign of mRNA UTRs) is a LegNet convolutional model for predicting cell-type-specific untranslated-region (UTR) activity and 3' UTR mRNA stability. This toolkit scores 5'/3' UTR sequences across the PARADE cell-line panel and predicts RNA/gDNA stability, using the checkpoints published with the paper.

<div class="page-hero"><img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/tool/parade/hero.png" alt="PARADE" /><div class="tool-org-badges page-hero-badges"><a href="/docs/tools/organizations/university-of-california-san-francisco" class="tool-org-badge" style={{background: "#052049"}} title="University of California, San Francisco"><img src="https://mintcdn.com/bio-pro/rW-ZVHoYhZw2v7T_/assets/images/cached/5041e72f92fb.png?fit=max&auto=format&n=rW-ZVHoYhZw2v7T_&q=85&s=7ac60809f069a1cfd150f24d073683ca" alt="" class="tool-org-badge-logo" width="330" height="161" data-path="assets/images/cached/5041e72f92fb.png" /> UCSF</a> <a href="/docs/tools/organizations/autosome-org" class="tool-org-badge" style={{background: "#F06000"}} title="Autosome.org"><img src="https://mintcdn.com/bio-pro/rW-ZVHoYhZw2v7T_/assets/images/cached/e44bca269463.png?fit=max&auto=format&n=rW-ZVHoYhZw2v7T_&q=85&s=87db0e2162a4f2d6c226b794824d9a29" alt="" class="tool-org-badge-logo" width="96" height="96" data-path="assets/images/cached/e44bca269463.png" /> Autosome.org</a></div></div>

<Note>
  **License:** PARADE is open source and free for academic and commercial use under an MIT license and may require explicit attribution when utilized. Please refer to [the license](https://github.com/autosome-ru/parade/blob/master/LICENSE) for full terms.
</Note>

<p class="entity-disclaimer">Proto is not affiliated with University of California, San Francisco and Autosome.org. This toolkit is open source and builds on the implementations produced by these organizations. Product names, logos, and trademarks are the property of their respective owners.</p>

<hr class="entity-rule" />

<input type="radio" name="tab-parade" id="none-parade" class="tab-radio-input" />

<input type="radio" name="tab-parade" id="github-parade" class="tab-radio-input" defaultChecked />

<input type="radio" name="tab-parade" id="preprint-parade" class="tab-radio-input" />

<input type="radio" name="tab-parade" id="cite-parade" class="tab-radio-input" />

<input type="radio" name="tab-parade" id="source-parade" class="tab-radio-input" />

<input type="radio" name="tab-parade" id="notebook-parade" class="tab-radio-input" />

<input type="radio" name="tab-parade" id="proto-parade" class="tab-radio-input" />

<div class="tool-tab-bar">
  <span class="tool-tab-wrap"><label for="github-parade" class="tool-tab tab-open badge-github"><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> GitHub</label><label for="none-parade" class="tool-tab tab-close badge-github"><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> GitHub</label></span> <span class="tool-tab-wrap"><label for="preprint-parade" class="tool-tab tab-open badge-preprint"><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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Preprint</label><label for="none-parade" class="tool-tab tab-close badge-preprint"><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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Preprint</label></span> <span class="tool-tab-wrap"><label for="cite-parade" 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-parade" 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> <span class="tool-tab-wrap"><label for="source-parade" 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> Tool Source</label><label for="none-parade" 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> Tool Source</label></span> <span class="tool-tab-wrap"><label for="notebook-parade" class="tool-tab tab-open badge-notebook"><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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open as Notebook</label><label for="none-parade" class="tool-tab tab-close badge-notebook"><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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open as Notebook</label></span> <span class="tool-tab-wrap"><label for="proto-parade" class="tool-tab tab-open badge-local"><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="4 17 10 11 4 5" /><line x1="12" y1="19" x2="20" y2="19" /></svg> Run Locally</label><label for="none-parade" class="tool-tab tab-close badge-local"><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="4 17 10 11 4 5" /><line x1="12" y1="19" x2="20" y2="19" /></svg> Run Locally</label></span>
</div>

<a href="https://github.com/autosome-ru/parade" target="_blank" class="tab-panel github-panel" data-tab="github-parade">
  <div class="gh-card-wrap">
    <img src="https://opengraph.githubassets.com/1/autosome-ru/parade" class="gh-card-img img-fallback" alt="autosome-ru/parade" />

    <div class="gh-card-fallback">
      <div class="gh-fallback-org"><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> autosome-ru/parade</div>
    </div>
  </div>

  <span class="panel-goto-btn gh-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 repo</span></span>
</a>

<a href="https://doi.org/10.1101/2024.12.31.630783" target="_blank" class="tab-panel preprint-panel" data-tab="preprint-parade">
  <div class="paper-info">
    <div class="paper-title">A generative framework for enhanced cell-type specificity in rationally designed mRNAs</div>
    <div class="paper-meta">Matvei Khoroshkin, Arsenii Zinkevich, ... Hani Goodarzi</div>
    <div class="paper-meta paper-venue">bioRxiv (2024)</div>
  </div>

  <span class="panel-goto-btn preprint-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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" /><polyline points="14 2 14 8 20 8" /><line x1="16" y1="13" x2="8" y2="13" /><line x1="16" y1="17" x2="8" y2="17" /><polyline points="10 9 9 9 8 9" /></svg> Read preprint</span></span>
</a>

<div class="tab-panel cite-panel" data-tab="cite-parade">
  <div class="cite-code-wrap">
    ```bibtex theme={null}
    @article{khoroshkin2024parade,
      title={A generative framework for enhanced cell-type specificity in rationally designed mRNAs},
      author={Khoroshkin, Matvei and Zinkevich, Arsenii and Aristova, Elizaveta and Yousefi, Hassan and Lee, Sean B. and Mittmann, Tabea and Manegold, Karoline and Penzar, Dmitry and Raleigh, David R. and Kulakovskiy, Ivan V. and Goodarzi, Hani},
      journal={bioRxiv},
      year={2024},
      publisher={Cold Spring Harbor Laboratory},
      doi={10.1101/2024.12.31.630783}
    }
    ```
  </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>

<a href="https://github.com/evo-design/proto-tools/tree/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade" target="_blank" class="tab-panel source-panel" data-tab="source-parade">
  <div class="source-info">
    <img src="https://github.com/evo-design.png?size=40" class="source-avatar" width="36" height="36" />

    <span class="source-path">evo-design/proto-tools<span class="source-subpath">/proto\_tools/tools/sequence\_scoring/parade</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>

<a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/examples/example.ipynb" target="_blank" class="tab-panel notebook-panel" data-tab="notebook-parade">
  <div class="notebook-info">
    <span class="notebook-icon">
      <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" />

        <path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" />
      </svg>
    </span>

    <span class="notebook-label">Open Notebook</span>
  </div>

  <span class="panel-goto-btn notebook-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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" /><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" /></svg> Open notebook</span></span>
</a>

<div class="tab-panel proto-panel run-local-panel" data-tab="proto-parade">
  <a href="https://github.com/evo-design/proto-tools" target="_blank" class="run-local-preview">
    <img noZoom src="https://opengraph.githubassets.com/1/evo-design/proto-tools" alt="proto-tools on GitHub" />
  </a>

  <div class="run-local-install">
    <span class="run-local-label">Run locally with proto-tools</span>

    <div class="run-local-code">
      ```bash theme={null}
      pip install git+https://github.com/evo-design/proto-tools.git
      ```
    </div>
  </div>
</div>

<div class="entity-contributors"><span class="entity-contributors-label">Toolkit contributors</span><span class="entity-contributors-people"><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><a class="entity-contributor" href="https://github.com/roknabadi" target="_blank" rel="noopener" title="roknabadi: 1 commit"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/74315203?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">roknabadi</span></a></span></div>

| Function                 | Description                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------ | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `run_parade_activity()`  | Predict cell-type-specific 5'/3' UTR activity with the PARADE LegNet model (GPU)             | <a href="#api-run-parade-activity" class="func-table-btn func-api-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" /></svg> Docs</a> <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_activity.py#L226" target="_blank" class="func-table-btn func-source-btn"><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>   |
| `run_parade_gradient()`  | Compute differentiable PARADE UTR-activity losses and gradients for relaxed UTR logits (GPU) | <a href="#api-run-parade-gradient" class="func-table-btn func-api-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" /></svg> Docs</a> <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_gradient.py#L375" target="_blank" class="func-table-btn func-source-btn"><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>   |
| `run_parade_stability()` | Predict 3' UTR mRNA stability (RNA/gDNA log-ratio) with the PARADE LegNet model (GPU)        | <a href="#api-run-parade-stability" class="func-table-btn func-api-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" /></svg> Docs</a> <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_stability.py#L160" target="_blank" class="func-table-btn func-source-btn"><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> |

## Background

PARADE ([Khoroshkin et al., 2024](https://doi.org/10.1101/2024.12.31.630783)) is a generative framework for designing UTRs with tailored cell-type-specific activity. Its predictive core adapts the DREAM-challenge LegNet architecture: an EfficientNet-style convolutional network with squeeze-and-excite blocks that reads a one-hot UTR sequence plus a reading-frame positional channel and, for activity, broadcast cell-condition channels.

The activity models are trained per construct type — one for 5' UTRs and one for 3' UTRs — and condition on a panel of anonymized cell-line codes (`c1`, `c2`, `c4`, `c6`, `c17`, and, for 3' UTRs, `c13`), returning a predicted activity mass-center for each. A separate 3' UTR model predicts mRNA stability as an RNA/gDNA log-ratio. The featurization matches the upstream reference pipeline exactly, so predictions reproduce the published values.

## Tools

<a name="api-run-parade-activity" />

<div class="tool-section-card">
  ### PARADE UTR Activity (`parade-activity`)

  Predicts cell-type-specific activity for one or more 5' or 3' UTR sequences, returning one value per requested cell code.

  #### API Reference

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/shared_data_models.py#L258" 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>

    <Accordion title="Input: ParadeSequenceInput">
      <ParamField path="sequences" type="List[string]" required>
        UTR sequence(s). A single string is normalized to a one-item list. `U` is mapped to `T` and `N` is allowed; mixed lengths are fine (the tool batches per length group).
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-config-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_activity.py#L27" 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>

    <Accordion title="Config: ParadeActivityConfig">
      <ParamField path="construct_type" type="enum" default="utr5">
        Which UTR model to use — `"utr5"` (5' UTR) or `"utr3"` (3' UTR). Selects the checkpoint and the cell-code panel. Matching the upstream predictor, the model scores the bare insert (no reporter flanks are added).

        Available options: `utr5`, `utr3`
      </ParamField>

      <ParamField path="cell_types" type="List[string]">
        PARADE cell codes to return. Empty means the full panel for `construct_type`. Requested codes must belong to that panel.
      </ParamField>

      <ParamField path="verbose" type="integer" default="0">
        Verbosity level (0=quiet, 1=info, 2=debug, 3=raw subprocess stderr). `True` is coerced to `1` and `False` to `0`.
      </ParamField>

      <ParamField path="device" type="string" default="cuda">
        Device used for inference.
      </ParamField>

      <ParamField path="timeout" type="integer" default="3600">
        Maximum execution time in seconds. `None` waits indefinitely.
      </ParamField>

      <ParamField path="seed" type="integer">
        Random seed. When set, tools run reproducibly up to small GPU float noise (see `BaseToolOutput.approx_equal`), and the seed participates in cache keys. When None, cacheable seed-sensitive tools skip cache until seeded.
      </ParamField>

      <ParamField path="checkpoint" type="string" default="">
        Optional override for the pinned checkpoint — a local `.ckpt` path or an `https` link (a schemeless `host.tld/path` is accepted). Caller overrides run on local devices only (rejected on `device="cloud"`). Empty uses the pinned per-target checkpoint.
      </ParamField>

      <ParamField path="batch_size" type="integer" default="8">
        Number of sequences to run per GPU batch.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-output-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_activity.py#L116" 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>

    <Accordion title="Output: ParadeActivityOutput">
      <ResponseField name="results" type="List[ParadeActivityResult]">
        Per-sequence PARADE predictions. The only stored field, so the output survives the framework's iterable-cache reconstruction (which preserves only the iterable field).

        <Expandable title="ParadeActivityResult">
          <ResponseField name="sequence" type="string" required>
            UTR sequence that was scored (DNA alphabet).
          </ResponseField>

          <ResponseField name="sequence_length" type="integer" required>
            Length of the scored sequence.
          </ResponseField>

          <ResponseField name="construct_type" type="enum" required>
            UTR model that produced these scores. Carried per-result so the provenance survives iterable-cache reconstruction.
          </ResponseField>

          <ResponseField name="scores" type="ParadeActivityMetrics" required>
            Predicted activity keyed by cell code.
          </ResponseField>
        </Expandable>
      </ResponseField>

      **Metrics** (one set per `results` item)

      | Metric | Type  | Range     | Availability   |
      | ------ | ----- | --------- | -------------- |
      | `c1`   | float | unbounded | when requested |
      | `c2`   | float | unbounded | when requested |
      | `c4`   | float | unbounded | when requested |
      | `c6`   | float | unbounded | when requested |
      | `c17`  | float | unbounded | when requested |
      | `c13`  | float | unbounded | when requested |
    </Accordion>
  </div>

  #### Applications

  Use this tool to rank UTR designs by predicted activity, screen candidate UTRs for a target cell line, or quantify the activity differential between cell types for cell-type-specific mRNA design.

  #### Usage Tips

  * **Pick the construct type.** Set `construct_type` to `utr5` or `utr3`; it selects the matching checkpoint and cell-code panel.
  * **Cell codes are panel-specific.** `c13` exists only for `utr3`. Leave `cell_types` empty to return the full panel for the construct type.
  * **Match the training length.** Upstream trained the 5' UTR model on \~50-nt inserts and the 3' UTR model on \~240-nt (roughly 200–300 nt) inserts; the model accepts any length (adaptive pooling) but predictions are only meaningful near the training regime.
  * **Mixed lengths batch together.** Different-length sequences in one call are batched per length group; RNA input (`U`) is accepted and mapped to `T`.

  <a name="api-run-parade-stability" />
</div>

<div class="tool-section-card">
  ### PARADE mRNA Stability (`parade-stability`)

  Predicts 3' UTR mRNA stability as an RNA/gDNA log-ratio for one or more sequences; higher is more stable.

  #### API Reference

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/shared_data_models.py#L258" 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>

    <Accordion title="Input: ParadeSequenceInput">
      <ParamField path="sequences" type="List[string]" required>
        UTR sequence(s). A single string is normalized to a one-item list. `U` is mapped to `T` and `N` is allowed; mixed lengths are fine (the tool batches per length group).
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-config-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/shared_data_models.py#L296" 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>

    <Accordion title="Config: ParadeCheckpointConfig">
      <ParamField path="checkpoint" type="string" default="">
        Optional override for the pinned upstream checkpoint — a local `.ckpt` path or an `https` link (a schemeless `host.tld/path` is accepted and normalized to `https://`). A caller override runs on local devices only (rejected on `device="cloud"`, since a checkpoint is an executable pickle). Empty uses the pinned per-target checkpoint, verified against its built-in checksum.
      </ParamField>

      <ParamField path="batch_size" type="integer" default="8">
        Number of sequences to run per GPU batch.
      </ParamField>

      <ParamField path="verbose" type="integer" default="0">
        Verbosity level (0=quiet, 1=info, 2=debug, 3=raw subprocess stderr). `True` is coerced to `1` and `False` to `0`.
      </ParamField>

      <ParamField path="device" type="string" default="cuda">
        Device used for inference.
      </ParamField>

      <ParamField path="timeout" type="integer" default="3600">
        Maximum execution time in seconds. `None` waits indefinitely.
      </ParamField>

      <ParamField path="seed" type="integer">
        Random seed. When set, tools run reproducibly up to small GPU float noise (see `BaseToolOutput.approx_equal`), and the seed participates in cache keys. When None, cacheable seed-sensitive tools skip cache until seeded.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-output-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_stability.py#L80" 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>

    <Accordion title="Output: ParadeStabilityOutput">
      <ResponseField name="results" type="List[ParadeStabilityResult]">
        Per-sequence PARADE stability predictions.

        <Expandable title="ParadeStabilityResult">
          <ResponseField name="sequence" type="string" required>
            3' UTR sequence that was scored (DNA alphabet).
          </ResponseField>

          <ResponseField name="sequence_length" type="integer" required>
            Length of the scored sequence.
          </ResponseField>

          <ResponseField name="scores" type="ParadeStabilityMetrics" required>
            Stability metrics; the `log_ratio` metric (RNA/gDNA log-ratio, higher means more stable) is also exposed via the `log_ratio` convenience property.
          </ResponseField>
        </Expandable>
      </ResponseField>

      **Metrics** (one set per `results` item)

      | Metric      | Type  | Range     | Availability |
      | ----------- | ----- | --------- | ------------ |
      | `log_ratio` | float | unbounded | always       |
    </Accordion>
  </div>

  #### Applications

  Use this tool to rank 3' UTR designs by predicted mRNA stability or to pair stability with cell-type-specific activity when selecting UTRs for downstream validation.

  #### Usage Tips

  * **Stability has no cell conditioning.** The model returns a single log-ratio per sequence.
  * **Use the training length.** Upstream trained this stability model on 186-nt sequences (its `seqsize`); score near that length. Mixed lengths in one call are batched per length group.
  * **Higher is more stable.** The `log_ratio` output is directly comparable across candidates.

  <a name="api-run-parade-gradient" />
</div>

<div class="tool-section-card tool-section-card--gradient">
  ### PARADE UTR Activity Gradient (`parade-gradient`)

  Computes a weighted differentiable UTR-activity objective and, by default, returns the gradient with respect to batched relaxed UTR logits.

  #### API Reference

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_gradient.py#L79" 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>

    <Accordion title="Input: ParadeGradientInput">
      <ParamField path="logits" type="List[array]" required>
        Batched relaxed UTR logits with shape `(B, L, 4)` in `A,C,G,T` order. Use `B=1` for a single design candidate.
      </ParamField>

      <ParamField path="temperature" type="number" default="1.0">
        Softmax temperature used to relax logits.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-config-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_gradient.py#L131" 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>

    <Accordion title="Config: ParadeGradientConfig">
      <ParamField path="construct_type" type="enum" default="utr5">
        UTR model to use — `"utr5"` or `"utr3"`.

        Available options: `utr5`, `utr3`
      </ParamField>

      <ParamField path="loss_terms" type="List[ParadeGradientLossTerm]">
        Per-cell objective terms summed into one scalar loss.

        <Expandable title="ParadeGradientLossTerm">
          <ParamField path="cell_type" type="enum" default="c2">
            PARADE cell code to optimize; must be in the configured `construct_type` panel.

            Available options: `c1`, `c2`, `c4`, `c6`, `c17`, `c13`
          </ParamField>

          <ParamField path="direction" type="enum" default="max">
            `"max"` minimizes `1 - sigmoid((raw - center) / scale)`; `"min"` minimizes `sigmoid((raw - center) / scale)`.

            Available options: `max`, `min`
          </ParamField>

          <ParamField path="weight" type="number" default="1.0">
            Non-negative scalar applied before terms are summed.
          </ParamField>

          <ParamField path="sigmoid_center" type="number" default="2.0">
            Raw activity value where the sigmoid is 0.5.
          </ParamField>

          <ParamField path="sigmoid_scale" type="number" default="1.0">
            Positive scale for the raw activity transform.
          </ParamField>
        </Expandable>
      </ParamField>

      <ParamField path="checkpoint" type="string" default="">
        Optional override for the pinned checkpoint — a local `.ckpt` path or an `https` link (a schemeless `host.tld/path` is accepted). Caller overrides run on local devices only (rejected on `device="cloud"`). Empty uses the pinned per-target checkpoint.
      </ParamField>

      <ParamField path="soft" type="number" default="1.0">
        Blend hard argmax one-hot (0) to softmax probabilities (1).
      </ParamField>

      <ParamField path="hard" type="number" default="0.0">
        Straight-through hard-forward coefficient.
      </ParamField>

      <ParamField path="compute_gradient" type="boolean" default="True">
        Run backward pass and return gradient.
      </ParamField>

      <ParamField path="verbose" type="integer" default="0">
        Verbosity level (0=quiet, 1=info, 2=debug, 3=raw subprocess stderr). `True` is coerced to `1` and `False` to `0`.
      </ParamField>

      <ParamField path="device" type="string" default="cuda">
        Device used for inference and backpropagation.
      </ParamField>

      <ParamField path="timeout" type="integer" default="3600">
        Maximum execution time in seconds. `None` waits indefinitely.
      </ParamField>

      <ParamField path="seed" type="integer">
        Random seed. When set, tools run reproducibly up to small GPU float noise (see `BaseToolOutput.approx_equal`), and the seed participates in cache keys. When None, cacheable seed-sensitive tools skip cache until seeded.
      </ParamField>
    </Accordion>
  </div>

  <div class="api-model-section api-output-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/parade_gradient.py#L310" 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>

    <Accordion title="Output: ParadeGradientOutput">
      <ResponseField name="sample_metrics" type="List[ParadeGradientSampleMetrics]">
        Per-sample metric containers with scalar loss and raw per-cell activity.

        <Expandable title="ParadeGradientSampleMetrics">
          <ResponseField name="loss_terms" type="List[Dict[string, any]]">
            Per-objective-term metadata, including direction, weight, sigmoid transform, and weighted score.
          </ResponseField>

          <ResponseField name="primary_metric" type="string">
            Name of the metric that best summarizes the result overall (e.g. `"avg_plddt"` for AlphaFold2). Used by downstream UI and reporting to pick a headline value.
          </ResponseField>

          <ResponseField name="metric_type" type="string">
            Concrete Metrics subclass tag; enables typed reconstruction after a serialization round-trip.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="gradient" type="array">
        Gradient tensor matching input UTR logits, or `None` when `compute_gradient=False`.
      </ResponseField>

      <ResponseField name="loss" type="number" required>
        Sum of per-sample weighted scalar objective values. Per-sample values are available in `sample_metrics`.
      </ResponseField>

      <ResponseField name="metrics" type="Dict[string, any]">
        Auxiliary metadata bundle from the standalone worker, including raw scores, objective-term metadata, and relaxation parameters.
      </ResponseField>

      <ResponseField name="vocab" type="List[string]" required>
        DNA column ordering for logits and gradient.
      </ResponseField>

      **Metrics**

      | Metric | Type  | Range     | Availability   |
      | ------ | ----- | --------- | -------------- |
      | `loss` | float | ≥ 0.0     | always         |
      | `c1`   | float | unbounded | when requested |
      | `c2`   | float | unbounded | when requested |
      | `c4`   | float | unbounded | when requested |
      | `c6`   | float | unbounded | when requested |
      | `c17`  | float | unbounded | when requested |
      | `c13`  | float | unbounded | when requested |
    </Accordion>
  </div>

  #### Applications

  Use this tool inside gradient-based UTR design loops (e.g. Fast SeqProp) to maximize activity in an on-target cell line while minimizing it in off-target cell lines. It is designed for optimizer calls rather than final biological validation.

  #### Usage Tips

  * **Logits are batched.** Pass logits with shape `B x L x 4` in `A,C,G,T` order; use `B=1` for a single candidate.
  * **Terms target cell codes.** Each loss term names a `cell_type`, a `direction` (`max`/`min`), and a `weight`; all codes must be in the `construct_type` panel.
  * **Soft/hard mixing controls relaxation.** `soft=1.0, hard=0.0` is fully soft; increasing `hard` uses a straight-through hard-forward estimator.
</div>

## Toolkit Notes

These apply to every PARADE tool in this toolkit (`parade-activity`, `parade-stability`, `parade-gradient`).

* **Runs on GPU or CPU.** The tools load a small PyTorch LegNet checkpoint; a GPU speeds up large batches but is not required.
* **Weights are provisioned automatically.** By default, the standalone worker downloads the published checkpoint from the pinned `autosome-ru/parade` commit into the managed model cache and verifies its MD5 checksum.
* **Predictions are faithful to the reference.** The vendored PARADE model/data modules are the verbatim upstream bodies (with only a provenance/Ruff header added per file), so the published checkpoints load and score exactly as they do upstream.

<Tip>
  **Example notebook:** See the [full working example](https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/sequence_scoring/parade/examples/example.ipynb) for a copy-paste-ready walkthrough.
</Tip>

## Infrastructure Guides

The following guides cover how to run tools efficiently and at scale.

<CardGroup cols={2}>
  <Card title="Tool Persistence" icon="repeat" href="/docs/tools/guides/tool-persistence">Keep a tool's model warm across calls instead of reloading it every invocation.</Card>
  <Card title="Device Management" icon="cpu" href="/docs/tools/guides/device-management">How GPUs are allocated to tools and how to target specific devices.</Card>
  <Card title="Parallel Execution" icon="layers" href="/docs/tools/guides/parallel-execution">Fan a batch of inputs out across multiple GPUs.</Card>
</CardGroup>

## Additional Information

<AccordionGroup>
  <Accordion title="References">
    * Khoroshkin, M. et al. A generative framework for enhanced cell-type specificity in rationally designed mRNAs. *bioRxiv* (2024). DOI: [10.1101/2024.12.31.630783](https://doi.org/10.1101/2024.12.31.630783)
    * PARADE repository: [autosome-ru/parade](https://github.com/autosome-ru/parade)
    * LegNet architecture: Penzar, D. et al. LegNet: a best-in-class deep learning model for short DNA regulatory regions. *Bioinformatics* 39 (2023). DOI: [10.1093/bioinformatics/btad457](https://doi.org/10.1093/bioinformatics/btad457)
  </Accordion>
</AccordionGroup>
