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

# OpenDDE

> OpenDDE is [Aureka AI Research](https://github.com/aurekaresearch)'s open-source, all-atom biomolecular co-folding foundation model in the AlphaFold3 family: a single model that predicts the joint 3D structure of complexes mixing proteins, DNA, RNA, small-molecule ligands, and ions. This toolkit runs OpenDDE structure prediction on a local GPU, with optional multiple-sequence alignments, and returns per-complex confidence metrics.

<div class="page-hero"><img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/tool/opendde/hero.png" alt="OpenDDE" /><div class="tool-org-badges page-hero-badges"><a href="/docs/tools/organizations/aureka-ai-research" class="tool-org-badge" style={{background: "#4B42E5"}} title="Aureka AI Research"><img src="https://mintcdn.com/bio-pro/LOWQrNBaTrwTO8Yk/assets/images/org-logos/aureka-ai-research.svg?fit=max&auto=format&n=LOWQrNBaTrwTO8Yk&q=85&s=1e7fcd94844e91aee35fc1e32e5c99ea" alt="" class="tool-org-badge-logo" width="64" height="64" data-path="assets/images/org-logos/aureka-ai-research.svg" /> Aureka AI Research</a></div></div>

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

<p class="entity-disclaimer">Proto is not affiliated with Aureka AI Research. This toolkit is open source and builds on the implementation produced by this organization. Product names, logos, and trademarks are the property of their respective owners.</p>

<hr class="entity-rule" />

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

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

<input type="radio" name="tab-opendde" id="hf-opendde" class="tab-radio-input" />

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

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

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

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

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

<div class="tool-tab-bar">
  <span class="tool-tab-wrap"><label for="github-opendde" 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-opendde" 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="hf-opendde" class="tool-tab tab-open badge-hf"><img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" width="16" height="16" class="hf-logo" /> HuggingFace</label><label for="none-opendde" class="tool-tab tab-close badge-hf"><img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" width="16" height="16" class="hf-logo" /> HuggingFace</label></span> <span class="tool-tab-wrap"><label for="preprint-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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-opendde" 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/aurekaresearch/OpenDDE" target="_blank" class="tab-panel github-panel" data-tab="github-opendde">
  <div class="gh-card-wrap">
    <img src="https://opengraph.githubassets.com/1/aurekaresearch/OpenDDE" class="gh-card-img img-fallback" alt="aurekaresearch/OpenDDE" />

    <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> aurekaresearch/OpenDDE</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://huggingface.co/aurekaresearch/OpenDDE" target="_blank" class="tab-panel hf-panel" data-tab="hf-opendde">
  <div class="hf-card-wrap">
    <img src="https://cdn-thumbnails.huggingface.co/social-thumbnails/models/aurekaresearch/OpenDDE.png" class="hf-card-img img-fallback" alt="aurekaresearch/OpenDDE" />

    <div class="hf-card-fallback">
      <div class="hf-fallback-org"><img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" width="16" height="16" class="hf-logo" /> aurekaresearch/OpenDDE</div>
    </div>
  </div>

  <span class="panel-goto-btn hf-goto-btn"><span><img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" width="16" height="16" class="hf-logo" /> View model</span></span>
</a>

<a href="https://arxiv.org/abs/2607.03787" target="_blank" class="tab-panel preprint-panel" data-tab="preprint-opendde">
  <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-opendde">
  <div class="cite-code-wrap">
    ```bibtex theme={null}
    @misc{aureka2026opendde,
      title={Folding, Reasoning, and Scaling with Open-source Drug Discovery Engine},
      author={{Aureka AI Research}},
      year={2026},
      url={https://arxiv.org/abs/2607.03787},
      note={Preprint}
    }

    @misc{aureka2026opendde_software,
      title={OpenDDE: An Open-Source All-Atom Biomolecular Co-Folding Foundation Model},
      author={{Aureka AI Research}},
      year={2026},
      howpublished={\url{https://github.com/aurekaresearch/OpenDDE}}
    }
    ```
  </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/structure_prediction/opendde" target="_blank" class="tab-panel source-panel" data-tab="source-opendde">
  <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/structure\_prediction/opendde</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/structure_prediction/opendde/examples/example.ipynb" target="_blank" class="tab-panel notebook-panel" data-tab="notebook-opendde">
  <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-opendde">
  <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/adititm" target="_blank" rel="noopener" title="adititm: 1 commit"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/61667248?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">adititm</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>

| Function        | Description                                                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| --------------- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `run_opendde()` | All-atom biomolecular structure prediction using OpenDDE (GPU) | <a href="#api-run-opendde" 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/structure_prediction/opendde/opendde.py#L273" 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

OpenDDE ([Aureka AI Research, 2026](https://arxiv.org/abs/2607.03787)) predicts the joint 3D structure of a biomolecular assembly from the sequences and chemical components it contains. It is an openly licensed, all-atom co-folding model where one model folds complexes that mix proteins, DNA, RNA, and small-molecule ligands and predicts how those components are arranged relative to one another. Each protein chain can be paired with a multiple-sequence alignment (MSA) of evolutionarily related sequences, whose covariation patterns supply the evolutionary signal the model uses to place residues.

Architecturally, OpenDDE follows AlphaFold3: it carries a single representation of the input tokens and a pairwise representation over token pairs, refines them through a Pairformer-style trunk, and generates all-atom coordinates with a diffusion module that starts from noise and iteratively denoises into a structure. Several structures can be sampled per complex and ranked by a confidence score. Predicted confidence includes a per-residue predicted local distance difference test (pLDDT) for local reliability, a global predicted distance error (gPDE) for the relative placement of tokens, and predicted template-modeling (pTM) and interface predicted template-modeling (ipTM) scores that summarize overall and interface accuracy, together with an overall ranking score used to select the best sample.

The reference implementation is open-sourced at [aurekaresearch/OpenDDE](https://github.com/aurekaresearch/OpenDDE), with both the code and the model parameters released under the Apache-2.0 license for academic and commercial use. It builds on ideas and components from [Protenix](https://github.com/bytedance/Protenix), [OpenFold](https://github.com/aqlaboratory/openfold), and [ColabFold](https://github.com/sokrypton/ColabFold). Two checkpoints are released: a general-purpose model and an antibody-antigen-tuned variant. It was developed by Aureka AI Research as an open drug-discovery engine spanning structure prediction, design, and optimization.

### Learning Resources

* [OpenDDE Technical Report](https://huggingface.co/aurekaresearch/OpenDDE/blob/main/docs/OpenDDE_Technical_reports.pdf) (Aureka AI Research) - the technical report describing OpenDDE's architecture, training data, and benchmark results.

## Tools

<a name="api-run-opendde" />

<div class="tool-section-card tool-section-card--predict">
  ### OpenDDE Structure Prediction (`opendde-prediction`)

  Predicts the 3D structure of a biomolecular complex. Each input complex can combine protein, DNA, RNA, and ligand chains; the assembly is folded by OpenDDE and returned as a predicted `Structure` per complex with confidence metrics: average pLDDT, pTM, interface pTM for multi-chain complexes, a global predicted distance error, and a ranking score.

  #### API Reference

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/structure_prediction/opendde/opendde.py#L46" 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: OpenDDEInput">
      <ParamField path="complexes" type="List[Complex]" required>
        List of complexes to predict structures for. Inherited from `StructurePredictionInput`. Each complex can contain one or more chains of proteins, DNA, RNA, or ligands.

        <Expandable title="Complex">
          <ParamField path="chains" type="List[Chain | Fragment]" required>
            Chains in the complex, in input order.
          </ParamField>
        </Expandable>
      </ParamField>

      <ParamField path="msas" type="array">
        Pre-computed MSAs, one entry per complex. Each entry is a `ComplexMSAs` (per-chain MSAs keyed by chain index). Populated by `preprocess()` or supplied directly. Default: None.
      </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/structure_prediction/opendde/opendde.py#L143" 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: OpenDDEConfig">
      <ParamField path="model_checkpoint" type="string" default="opendde_v1">
        Which weights to fold with — a bundled model name (`"opendde_v1"` general-purpose or `"opendde_abag"` antibody-antigen, both auto-downloaded into `PROTO_MODEL_CACHE` on first inference) or a path to a custom `.pt` checkpoint. Default: `"opendde_v1"`.
      </ParamField>

      <ParamField path="num_samples" type="integer" default="1">
        Independent diffusion samples per complex (`--sample`); the best by ranking score is returned. Default: 1.
      </ParamField>

      <ParamField path="num_steps" type="integer" default="200">
        Diffusion denoising steps (`--step`). Higher = more refined but slower. Default: 200.
      </ParamField>

      <ParamField path="num_cycles" type="integer" default="10">
        Recycling iterations (`--cycle`). Higher = more accurate but slower. Default: 10.
      </ParamField>

      <ParamField path="use_template" type="boolean" default="False">
        Enable OpenDDE's template pipeline (`--use_template`). proto\_tools does not generate templates, so this relies on OpenDDE's own search, which needs the `search_database/` assets `setup.sh` does not download. Default: False.
      </ParamField>

      <ParamField path="use_rna_msa" type="boolean" default="False">
        Enable OpenDDE's RNA MSA pipeline (`--use_rna_msa`). Also requires the `search_database/` assets. Default: False.
      </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 to run on (`"cuda"`, `"cpu"`). Inherited. Default: `"cuda"`.
      </ParamField>

      <ParamField path="timeout" type="integer" default="1200">
        Max execution time in seconds; `None` waits indefinitely. Default: 1200.
      </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="include_pae_matrix" type="boolean" default="False">
        Inherited. When True, OpenDDE is run with `--need_atom_confidence` and the per-token PAE matrix (`pae`) plus a derived `avg_pae` scalar are attached to the metrics. Off by default — the matrix is O(n\_token^2) to compute and serialize. Default: False.
      </ParamField>

      <ParamField path="use_msa" type="boolean" default="True">
        Auto-generate protein MSAs via MMseqs2 homology search; supplied MSAs always override this. Inherited. Default: True.
      </ParamField>

      <ParamField path="msa_search_config" type="Mmseqs2HomologySearchConfig">
        MMseqs2 search config; only used when `use_msa=True`. Inherited. Default: None.
      </ParamField>

      <ParamField path="pair_heterocomplex_msas" type="boolean" default="True">
        Taxonomy-pair heterocomplex protein MSAs. Inherited. Default: True.
      </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/structure_prediction/opendde/opendde.py#L133" 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: OpenDDEOutput">
      <ResponseField name="structures" type="List[Structure]" required>
        Predicted structures, one per input complex, each carrying an :class:`OpenDDEMetrics` instance on `.metrics`.

        <Expandable title="Structure">
          <ResponseField name="structure" type="string" required>
            Raw structure content in PDB or CIF format.
          </ResponseField>

          <ResponseField name="structure_format" type="string">
            Format of the content string (auto-detected if omitted).
          </ResponseField>

          <ResponseField name="b_factor_type" type="BFactorType">
            What the B-factor column represents.
          </ResponseField>

          <ResponseField name="source" type="string">
            Optional source identifier (filepath or tool name).
          </ResponseField>

          <ResponseField name="metrics" type="Metrics">
            Associated metrics (e.g., pLDDT, pTM scores, per-chain lists, pairwise matrices). None values are stripped at construction.
          </ResponseField>
        </Expandable>
      </ResponseField>

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

      | Metric          | Type                | Range        | Availability                   |
      | --------------- | ------------------- | ------------ | ------------------------------ |
      | `avg_plddt`     | float               | 0.0 to 100.0 | always                         |
      | `ptm`           | float               | 0.0 to 1.0   | always                         |
      | `iptm`          | float               | 0.0 to 1.0   | always                         |
      | `gpde`          | float               | ≥ 0.0        | always                         |
      | `ranking_score` | float               | unbounded    | always                         |
      | `has_clash`     | bool                | unbounded    | always                         |
      | `avg_pae`       | float               | 0.0 to 32.0  | when include\_pae\_matrix=True |
      | `pae`           | list\[list\[float]] | 0.0 to 32.0  | when include\_pae\_matrix=True |
    </Accordion>
  </div>

  #### Applications

  This tool predicts the structure of multi-component assemblies such as protein-DNA and protein-RNA complexes or protein-ligand binding poses, and the `opendde_abag` checkpoint targets antibody-antigen complexes specifically. Running it on a multi-chain complex also estimates how confidently the components are placed relative to each other through interface pTM and the global predicted distance error, which is informative for ranking predicted interfaces before trusting them downstream.

  #### Usage Tips

  * **`model_checkpoint` selects the weights.** Pass a bundled model name — `opendde_v1` (default, general-purpose) or `opendde_abag` (antibody-antigen tuned) — both auto-downloaded into `PROTO_MODEL_CACHE` on first inference; or pass a path to a custom `.pt` checkpoint to fold with your own weights.
  * **`use_msa` defaults to `True`.** An MMseqs2 homology search generates an MSA for each protein chain; set it `False` to fold single-sequence, or attach precomputed MSAs to the input, which always take precedence. OpenDDE's own internal MSA search runs only when `use_msa=True` and no MSAs are supplied.
  * **`num_samples` draws independent diffusion samples.** OpenDDE draws `num_samples` (default `1`) structures per complex and keeps the best by ranking score, so raising it explores more candidate conformations at proportional cost. Predictions are stochastic; set `seed` for reproducibility.
  * **`num_steps` and `num_cycles` trade accuracy for time.** `num_steps` (default `200`) sets the number of diffusion denoising steps and `num_cycles` (default `10`) sets the recycling iterations; higher values refine the prediction but increase runtime.
  * **`use_template` and `use_rna_msa` enable OpenDDE's extra pipelines.** Both default to `False`; enable `use_template` for OpenDDE's template search and `use_rna_msa` for its RNA MSA pipeline when folding RNA-containing complexes.
  * **Confidence is reported as pLDDT, pTM, ipTM, gPDE, and a ranking score.** `avg_plddt` (0 to 100) is the primary per-structure quality metric; `iptm` is 0.0 for single-chain inputs, and `gpde` is in angstroms. OpenDDE writes only scalar summary confidences, so no per-token PAE matrix is available and the inherited `include_pae_matrix` is ignored.
</div>

## Toolkit Notes

These apply to every OpenDDE tool in this toolkit (`opendde-prediction`).

* **Requires a GPU.** OpenDDE runs through a PyTorch backend and needs an NVIDIA GPU; CPU execution is not practical.
* **Open AlphaFold3-style co-folding model.** OpenDDE releases both code and weights under Apache-2.0 for academic and commercial use, and follows the AlphaFold3 diffusion architecture like Boltz-2 and Protenix. Its `opendde_abag` checkpoint additionally specializes in antibody-antigen complexes.
* **Predictions are stochastic.** Structures come from a diffusion process, so repeated runs vary unless sampling is seeded.
* **Early preview upstream.** Checkpoints and interfaces may change, so pin the version you validate against.

<Tip>
  **Example notebook:** See the [full working example](https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/structure_prediction/opendde/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>
