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

# InterPro

> [InterPro](https://www.ebi.ac.uk/interpro/) integrates protein signatures from member databases such as [Pfam](https://www.ebi.ac.uk/interpro/entry/pfam/), [SMART](https://smart.embl.de/), [PROSITE](https://prosite.expasy.org/), [CATH-Gene3D](https://www.cathdb.info/), [Panther](https://www.pantherdb.org/), and [PIRSF](https://proteininformationresource.org/pirsf/) into unified entries describing protein families, domains, and conserved sites. The `interproscan-fetch` tool returns one `InterProDomain` row schema over two paths: a direct lookup of precomputed InterPro annotations for a UniProt accession via the InterPro REST API, or submission of a raw protein sequence to EBI's InterProScan job service, which polls to completion and parses the result. It runs on CPU and requires only network access.

<div class="page-hero"><img class="page-hero-banner" src="https://proto-bio.github.io/proto-assets/images/tool/interproscan/hero.png" alt="InterPro" /><div class="tool-org-badges page-hero-badges"><a href="/docs/tools/organizations/embl-ebi" class="tool-org-badge" style={{background: "#007C82"}} title="EMBL-EBI"><img src="https://mintcdn.com/bio-pro/UeudeF7pW-Dj-pIN/assets/images/cached/d6be4d3bc893.png?fit=max&auto=format&n=UeudeF7pW-Dj-pIN&q=85&s=3f3eaae432293c6ed9a25a58e369baa3" alt="" class="tool-org-badge-logo" width="200" height="200" data-path="assets/images/cached/d6be4d3bc893.png" /> EMBL-EBI</a></div></div>

<Note>
  **License:** InterPro retrieves data from the InterPro classification, distributed under the EMBL-EBI Terms of Use. The client wrapper code is MIT-licensed. Please refer to [the data terms](https://www.ebi.ac.uk/about/terms-of-use/) for full terms.
</Note>

<p class="entity-disclaimer">Proto is not affiliated with EMBL-EBI. 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-interproscan" id="none-interproscan" class="tab-radio-input" />

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

<input type="radio" name="tab-interproscan" id="website-interproscan" class="tab-radio-input" />

<input type="radio" name="tab-interproscan" id="paper-interproscan" class="tab-radio-input" />

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

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

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

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

<div class="tool-tab-bar">
  <span class="tool-tab-wrap"><label for="github-interproscan" 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-interproscan" 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="website-interproscan" class="tool-tab tab-open badge-website"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Website</label><label for="none-interproscan" class="tool-tab tab-close badge-website"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Website</label></span> <span class="tool-tab-wrap"><label for="paper-interproscan" class="tool-tab tab-open badge-paper"><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> Publication</label><label for="none-interproscan" class="tool-tab tab-close badge-paper"><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> Publication</label></span> <span class="tool-tab-wrap"><label for="cite-interproscan" 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-interproscan" 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-interproscan" 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-interproscan" 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-interproscan" 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-interproscan" 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-interproscan" class="tool-tab tab-open badge-proto"><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="M13 2L3 14h9l-1 8 10-12h-9l1-8z" /></svg> Open on Proto</label><label for="none-interproscan" class="tool-tab tab-close badge-proto"><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="M13 2L3 14h9l-1 8 10-12h-9l1-8z" /></svg> Open on Proto</label></span>
</div>

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

    <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> ebi-pf-team/interproscan</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://www.ebi.ac.uk/interpro/" target="_blank" class="tab-panel website-panel" data-tab="website-interproscan">
  <div class="website-info">
    <img src="https://www.google.com/s2/favicons?domain=ebi.ac.uk&sz=32" class="website-favicon" width="24" height="24" />

    <span class="website-url">ebi.ac.uk</span>
  </div>

  <span class="panel-goto-btn website-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"><circle cx="12" cy="12" r="10" /><path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg> Visit website</span></span>
</a>

<a href="https://doi.org/10.1093/nar/gkae1082" target="_blank" class="tab-panel paper-panel" data-tab="paper-interproscan">
  <div class="paper-info">
    <div class="paper-title">InterPro: the protein sequence classification resource in 2025</div>
    <div class="paper-meta">Matthias Blum, Antonina Andreeva, ... Alex Bateman</div>
    <div class="paper-meta paper-venue">Nucleic Acids Research (2025)</div>
  </div>

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

<div class="tab-panel cite-panel" data-tab="cite-interproscan">
  <div class="cite-code-wrap">
    ```bibtex theme={null}
    @article{blum2025interpro,
      title={{InterPro}: the protein sequence classification resource in 2025},
      author={Blum, Matthias and Andreeva, Antonina and Florentino, Laise Cavalcanti and Chuguransky, Sara Rocio and Grego, Tiago and Hobbs, Emma and Pinto, Beatriz Lazaro and Orr, Ailsa and Paysan-Lafosse, Typhaine and Ponamareva, Irina and Salazar, Gustavo A. and Bordin, Nicola and Bork, Peer and Bridge, Alan and Colwell, Lucy and Gough, Julian and Haft, Daniel H. and Letunic, Ivica and Llinares-L{\'o}pez, Felipe and Marchler-Bauer, Aron and Meng-Papaxanthos, Laetitia and Mi, Huaiyu and Natale, Darren A. and Orengo, Christine A. and Pandurangan, Arun P. and Piovesan, Damiano and Rivoire, Catherine and Sigrist, Christian J. A. and Thanki, Narmada and Thibaud-Nissen, Fran{\c{c}}oise and Thomas, Paul D. and Tosatto, Silvio C. E. and Wu, Cathy H. and Bateman, Alex},
      journal={Nucleic Acids Research},
      volume={53},
      number={D1},
      pages={D444--D456},
      year={2025},
      publisher={Oxford University Press},
      doi={10.1093/nar/gkae1082}
    }
    ```
  </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/database_retrieval/interproscan" target="_blank" class="tab-panel source-panel" data-tab="source-interproscan">
  <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/database\_retrieval/interproscan</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/database_retrieval/interproscan/examples/example.ipynb" target="_blank" class="tab-panel notebook-panel" data-tab="notebook-interproscan">
  <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" data-tab="proto-interproscan">
  <div class="proto-info">
    <div class="proto-cloud">
      <svg class="proto-cloud-bg" viewBox="0 0 640 512" xmlns="http://www.w3.org/2000/svg">
        <path d="M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z" />
      </svg>

      <img noZoom src="https://mintcdn.com/bio-pro/KVh0EKV-IKblvXR8/assets/logo/evo-logo-light.svg?fit=max&auto=format&n=KVh0EKV-IKblvXR8&q=85&s=0cb66034ba45618505501aee6ea5f5c1" class="proto-panel-logo block dark:hidden" alt="Proto" width="198" height="151" data-path="assets/logo/evo-logo-light.svg" />

      <img noZoom src="https://mintcdn.com/bio-pro/KVh0EKV-IKblvXR8/assets/logo/evo-logo-dark.svg?fit=max&auto=format&n=KVh0EKV-IKblvXR8&q=85&s=2c9e23a14635e60384a434e220788f54" class="proto-panel-logo hidden dark:block" alt="Proto" width="198" height="151" data-path="assets/logo/evo-logo-dark.svg" />
    </div>
  </div>

  <div class="proto-actions">
    <a href="https://proto.evodesign.org/tools/interproscan-fetch" target="_blank" class="proto-action-btn"><span>InterProScan Fetch</span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="7" y1="17" x2="17" y2="7" /><polyline points="7 7 17 7 17 17" /></svg></a>
  </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: 11 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/dguo8412" target="_blank" rel="noopener" title="dguo8412: 4 commits"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/46211285?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">dguo8412</span></a><a class="entity-contributor" href="https://github.com/leba01" target="_blank" rel="noopener" title="leba01: 1 commit"><img noZoom class="entity-contributor-avatar" src="https://avatars.githubusercontent.com/u/124846286?v=4&s=64" alt="" loading="lazy" /><span class="entity-contributor-login">leba01</span></a></span></div>

| Function                   | Description                                                                                          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| -------------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `run_interproscan_fetch()` | Fetch InterPro domain annotations by UniProt accession (direct REST lookup) or by raw protein seq... | <a href="#api-run-interproscan-fetch" 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/database_retrieval/interproscan/interproscan_fetch.py#L357" 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

[InterPro](https://www.ebi.ac.uk/interpro/) ([Blum et al., 2025](https://doi.org/10.1093/nar/gkae1082)) is a freely accessible classification of protein families, domains, conserved sites, and homologous superfamilies, maintained by [EMBL-EBI](https://www.ebi.ac.uk/). A protein family is a set of evolutionarily related proteins that descend from a shared ancestor and share detectable sequence similarity, typically along with a common three-dimensional fold or biological function. A single InterPro entry groups orthogonal member-database signatures, such as a [Pfam](https://www.ebi.ac.uk/interpro/entry/pfam/) HMM and a [CATH-Gene3D](https://www.cathdb.info/) structural model, under one accession. InterProScan is the analysis pipeline that runs the member-database models against a sequence, and EBI exposes it as a public web service.

Internally, the direct path issues `GET https://www.ebi.ac.uk/interpro/api/entry/all/protein/uniprot/{accession}`, walking the opaque `next` cursor across paginated responses until the result set is exhausted. The submit path issues `POST https://www.ebi.ac.uk/Tools/services/rest/iprscan5/run/` with a required contact `email` and the sequence, receives a plain-text job ID, polls `/status/{job_id}` every three seconds until the job reaches `FINISHED`, then fetches `/result/{job_id}/json`. Both paths flatten matches into the same row schema, with each member-database match contributing rows carrying 1-indexed inclusive `start` and `end` coordinates to match biological residue selection conventions, a unified `type` label, the parent InterPro accession when integrated, and optional [Gene Ontology](https://geneontology.org/) (GO) and pathway cross-references.

Annotations and their provenance come directly from EMBL-EBI's official [InterPro REST API](https://interpro-documentation.readthedocs.io/) and iprscan5 service. Results reflect the live resource at query time rather than a fixed release snapshot.

### Learning Resources

* [InterPro documentation](https://interpro-documentation.readthedocs.io/) (EMBL-EBI) - official documentation covering InterPro entries, member databases, and the REST API.
* [Job Dispatcher web services documentation](https://www.ebi.ac.uk/jdispatcher/docs/webservices/) (EMBL-EBI) - reference for the iprscan5 submit-and-poll REST service, including fair-use guidance.

## Tools

<a name="api-run-interproscan-fetch" />

<div class="tool-section-card tool-section-card--fetch">
  ### InterProScan Fetch (`interproscan-fetch`)

  Retrieves InterPro domain annotations for a protein, either by direct REST lookup of a UniProt accession or by submitting a raw sequence to the iprscan5 service, and returns the resolved accession, sequence length, the list of member-database hits, the source URL, the iprscan5 job ID on the sequence path, and the raw API entries.

  #### API Reference

  <div class="api-model-section api-input-section">
    <a href="https://github.com/evo-design/proto-tools/blob/47e34afa5ea240a3b406e323dc38aa5dc85f223e/proto_tools/tools/database_retrieval/interproscan/interproscan_fetch.py#L178" 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: InterProScanFetchInput">
      <ParamField path="uniprot_id" type="string">
        UniProt accession for direct entry lookup against `interpro/api/entry/all/protein/uniprot/{acc}/`.
      </ParamField>

      <ParamField path="sequence" type="string">
        Raw protein sequence for the iprscan5 submit-and-scan path. Requires `config.email`.
      </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/database_retrieval/interproscan/interproscan_fetch.py#L213" 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: InterProScanFetchConfig">
      <ParamField path="email" type="string">
        Required by EBI's iprscan5 endpoint when submitting a sequence; ignored on the direct UniProt-lookup path. Defaults to the `INTERPROSCAN_EMAIL` environment variable; an explicit value passed to the config overrides the env var.
      </ParamField>

      <ParamField path="applications" type="array">
        Submit-only — restrict iprscan5 to a subset of member databases. `None` runs the EBI default set (every application enabled, matching upstream `appl[]` defaults).
      </ParamField>

      <ParamField path="include_go_terms" type="boolean" default="True">
        Include GO term cross-references in the output. Maps to iprscan5's `goterms` form param on the submit path; filters parser output on the direct path.
      </ParamField>

      <ParamField path="include_pathways" type="boolean" default="True">
        Fetch Reactome/KEGG/MetaCyc pathway cross-references after an iprscan5 sequence submission. Has no effect on the UniProt-id path — InterPro's UniProt-keyed endpoint does not return pathway data, so this stays empty on that path regardless of the flag.
      </ParamField>

      <ParamField path="sequence_type" type="enum" default="protein">
        Submit-only — `nucleic` tells iprscan5 to 6-frame translate the input.

        Available options: `protein`, `nucleic`
      </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="cpu">
        Device to run the tool on.
      </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/database_retrieval/interproscan/interproscan_fetch.py#L264" 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: InterProScanFetchOutput">
      <ResponseField name="accession" type="string">
        Resolved UniProt accession; `None` when the sequence path returns a result without a UniProt cross-reference.
      </ResponseField>

      <ResponseField name="sequence_length" type="integer">
        Length of the queried protein.
      </ResponseField>

      <ResponseField name="domains" type="List[InterProDomain]">
        All hits across all member databases, in the order returned by the API.

        <Expandable title="InterProDomain">
          <ResponseField name="accession" type="string" required>
            Member-DB accession (e.g. `"PF00870"`, `"IPR011615"`, `"G3DSA:1.10.10.10"`).
          </ResponseField>

          <ResponseField name="name" type="string" required>
            Human-readable domain / family name.
          </ResponseField>

          <ResponseField name="type" type="enum" required>
            Category — `family`, `domain`, `repeat`, `active_site`, `conserved_site`, `homologous_superfamily`, `binding_site`, `ptm`, or `unknown`.
          </ResponseField>

          <ResponseField name="member_database" type="string" required>
            Source database (`"pfam"`, `"panther"`, `"cathgene3d"`, …).
          </ResponseField>

          <ResponseField name="integrated_ipr" type="string">
            Parent InterPro accession; `None` when the member-DB hit is not yet integrated.
          </ResponseField>

          <ResponseField name="start" type="integer" required>
            1-indexed inclusive start residue.
          </ResponseField>

          <ResponseField name="end" type="integer" required>
            1-indexed inclusive end residue.
          </ResponseField>

          <ResponseField name="score" type="number">
            Per-DB score — e-value or bit-score depending on the member database. `None` when not reported.
          </ResponseField>

          <ResponseField name="model" type="string">
            Underlying HMM / profile / model identifier.
          </ResponseField>

          <ResponseField name="representative" type="boolean">
            Whether this is InterPro's representative match for the protein (one per parent IPR entry).
          </ResponseField>

          <ResponseField name="go_terms" type="List[string]">
            GO term IDs cross-referenced from this entry.
          </ResponseField>

          <ResponseField name="pathways" type="List[string]">
            Pathway IDs (Reactome, MetaCyc, …) cross-referenced from this entry.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="num_domains" type="integer" required>
        `len(domains)`.
      </ResponseField>

      <ResponseField name="job_id" type="string" required>
        iprscan5 job ID for the submit path; empty string for the direct-lookup path.
      </ResponseField>

      <ResponseField name="source_url" type="string" required>
        Canonical InterPro entry URL for the resolved accession (or the iprscan5 result URL on the sequence path).
      </ResponseField>

      <ResponseField name="raw_entries" type="List[Dict[string, any]]">
        Raw API JSON entries — one per InterPro entry on the direct path, one per match on the sequence path — for advanced consumers.
      </ResponseField>
    </Accordion>
  </div>

  #### Applications

  Use this to attach domain, family, and site annotation to a protein before design or filtering: identify the residues of an `active_site` or `conserved_site` match to lock before a redesign loop, partition a sequence into typed family and domain regions, or collect GO and pathway cross-references for functional grouping. The resolved accession and the parent InterPro identifiers compose with the [UniProt](https://bio-pro.mintlify.app/tools/database-retrieval/uniprot) and [AlphaFold DB](https://bio-pro.mintlify.app/tools/database-retrieval/alphafold-db) tools for accession resolution and structural context.

  #### Usage Tips

  * **The sequence-submission path requires a contact email.** When `sequence` is provided, `config.email` must be set. Provide it either via the `email` config attribute or via the `INTERPROSCAN_EMAIL` environment variable; an explicit config value overrides the env var. The tool raises a clear `ValueError` before contacting the server if neither is set. The direct accession path ignores `email`.
  * **Provide exactly one of `uniprot_id` or `sequence`.** The input validator rejects a call that supplies both or neither.
  * **`score` units are not uniform across rows.** The field carries whichever value the source member database publishes, an e-value for some databases and a bit-score for others, so filter by `member_database` before comparing scores.
  * **The direct path returns no pathway cross-references.** InterPro's UniProt-keyed endpoint does not surface pathway data, so `pathways` stays empty on that path regardless of configuration. Pathways are only populated on the sequence-submission path.
  * **A direct lookup raises when the accession is not indexed.** Very recent or removed UniProt accessions outside InterPro's coverage return no entries, surfacing as a `ValueError` rather than an empty result.
</div>

## Toolkit Notes

These apply to every InterProScan tool in this toolkit (`interproscan-fetch`).

* **Requires network access.** The tool calls the live InterPro REST API and iprscan5 service. It does not run offline and keeps no local copy of the data.
* **The sequence-submission path requires a contact email for identification.** This email lets EBI contact the submitter about job issues. It does not raise any bandwidth or rate allowance.
* **Sequence submissions are subject to a fair-use concurrency cap.** EBI asks that jobs be submitted in batches of no more than 30 concurrent jobs.

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