Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 54 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# CatPred: A Comprehensive Framework for Deep Learning In Vitro Enzyme Kinetic Parameters

[![DOI](https://img.shields.io/badge/DOI-10.1101/2024.03.10.584340-blue)](https://www.nature.com/articles/s41467-025-57215-9)
[![Web App](https://img.shields.io/badge/Web_App-www.catpred.com-059669)](https://www.catpred.com)
[![DOI](https://img.shields.io/badge/DOI-10.1038/s41467--025--57215--9-blue)](https://www.nature.com/articles/s41467-025-57215-9)
[![Colab](https://img.shields.io/badge/GoogleColab-tiny.cc/catpred-red)](https://tiny.cc/catpred)
[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)

---

## 🚨 Announcements 📢

- ✅ **14th Mar 2026** - Web app live at [www.catpred.com](https://www.catpred.com) — predict kcat, Km, and Ki directly in your browser!
- ✅ **28th Feb 2025** - Published in [_Nature Communications_](https://www.nature.com/articles/s41467-025-57215-9)
- ✅ **27th Dec 2024** - Updated repository with scripts to reproduce results from the manuscript.
- 🚧 **TODO**
- Add prediction codes for models using 3D-structural features.
- Add instructions to install CatPred using a Docker image.

---

## 📚 Table of Contents

- [Web App](#web-app)
- [Google Colab Interface](#colab-interface)
- [Local Installation](#local-installation)
- [System Requirements](#requirements)
Expand All @@ -26,12 +26,25 @@
- [Web API (Optional)](#web-api-optional)
- [Vercel Deployment (Optional)](#vercel-deployment-optional)
- [Reproducibility](#reproduce)
- [Fine-Tuning On Custom Data](#-fine-tuning-on-custom-data)
- [Docker](#-docker)
- [Acknowledgements](#acknw)
- [License](#license)
- [Citations](#citations)

---

## 🌐 Web App <a name="web-app"></a>

CatPred is live at **[www.catpred.com](https://www.catpred.com)** — no installation needed.

- **Two prediction modes:** Substrate kinetics (kcat/Km) and Inhibition (Ki)
- **Multi-substrate input** with primary substrate marker
- **CSV import/export** for batch workflows
- Powered by a [Modal](https://modal.com) serverless backend

---

## 🌐 Google Colab Interface <a name="colab-interface"></a>

For ease of use without any hardware requirements, a Google Colab interface is available here: [tiny.cc/catpred](http://tiny.cc/catpred).
Expand Down Expand Up @@ -70,19 +83,28 @@ cd catpred_pipeline
wget -c --tries=5 --timeout=30 https://catpred.s3.us-east-1.amazonaws.com/capsule_data_update.tar.gz || \
wget -c --tries=5 --timeout=30 https://catpred.s3.amazonaws.com/capsule_data_update.tar.gz
tar -xzf capsule_data_update.tar.gz
git clone https://github.com/maranasgroup/catpred.git
git clone https://github.com/maranasgroup/CatPred.git
cd catpred
conda env create -f environment.yml
conda activate catpred
pip install -e .
````
```

`stride` is Linux-only and optional for the default demos. If needed for your workflow, install it separately on Linux:

```bash
conda install -c kimlab stride
```

### 🐳 Docker

A `Dockerfile` is included for containerized usage (PyTorch 2.4, CUDA 12.4, Python 3.12.4 via Mambaforge).

```bash
docker build -t catpred .
docker run --gpus all -it catpred
```

### 🔮 Prediction <a name="predict"></a>

The Jupyter Notebook `batch_demo.ipynb` and the Python script `demo_run.py` show the usage of pre-trained models for prediction.
Expand All @@ -104,20 +126,29 @@ For released benchmark datasets, the number of entries with 3D structure can be

### 🌍 Web API (Optional)

CatPred also provides an optional FastAPI service for prediction workflows.
CatPred also provides an optional FastAPI service for prediction workflows. The Vue 3 frontend lives in `catpred/web/frontend/` and is served by the API at `/`.

Install web dependencies:

```bash
pip install -e ".[web]"
```

Run the API:
Run the API (serves the built frontend at `/`):

```bash
catpred_web --host 0.0.0.0 --port 8000
```

To develop the frontend:

```bash
cd catpred/web/frontend
npm install
npm run dev # Vite dev server with HMR
npm run build # Production build (vue-tsc + vite)
```

Endpoints:
- `GET /health` — liveness check.
- `GET /ready` — backend configuration/readiness.
Expand All @@ -129,7 +160,7 @@ By default, the API is hardened for service use:
- `results_dir` is constrained under `CATPRED_API_RESULTS_ROOT`.
- for local backend (and modal requests with fallback enabled), `checkpoint_dir` must resolve under `CATPRED_API_CHECKPOINT_ROOT`.

Minimal `POST /predict` example for local inference using `input_rows`:
Minimal `POST /predict` example for local inference using `input_rows` (human glucokinase + D-glucose):

```bash
curl -X POST http://127.0.0.1:8000/predict \
Expand All @@ -138,8 +169,11 @@ curl -X POST http://127.0.0.1:8000/predict \
"parameter": "kcat",
"checkpoint_dir": "kcat",
"input_rows": [
{"SMILES": "CCO", "sequence": "ACDEFGHIK", "pdbpath": "seq_a"},
{"SMILES": "CCN", "sequence": "LMNPQRSTV", "pdbpath": "seq_b"}
{
"SMILES": "C(C1C(C(C(C(O1)O)O)O)O)O",
"sequence": "MLDDRARMEAAKKEKVEQILAEFQLQEEDLKKVMRRMQKEMDRGLRLETHEEASVKMLPTYVRSTPEGSEVGDFLSLDLGGTNFRVMLVKVGEGEEGQWSVKTKHQMYSIPEDAMTGTAEMLFDYISECISDFLDKHQMKHKKLPLGFTFSFPVRHEDIDKGILLNWTKGFKASGAEGNNVVGLLRDAIKRRGDFEMDVVAMVNDTVATMISCYYEDHQCEVGMIVGTGCNACYMEEMQNVELVEGDEGRMCVNTEWGAFGDSGELDEFLLEYDRLVDESSANPGQQLYEKLIGGKYMGELVRLVLLRLVDENLLFHGEASEQLRTRGAFETRFVSQVESDTGDRKQIYNILSTLGLRPSTTDCDIVRRACESVSTRAAHMCSAGLAGVINRMRESRSEDVMRITVGVDGSVYKLHPSFKERFHASVRRLTPSCEITFIESEEGSGRGAALVSAVACKKACMLGQ",
"pdbpath": "GCK_HUMAN"
}
],
"results_dir": "batch1",
"backend": "local"
Expand Down Expand Up @@ -367,15 +401,14 @@ This source code is licensed under the MIT license found in the `LICENSE` file i
If you find the models useful in your research, we ask that you cite the relevant paper:

```bibtex
@article {Boorla2024.03.10.584340,
author = {Veda Sheersh Boorla and Costas D. Maranas},
title = {CatPred: A comprehensive framework for deep learning in vitro enzyme kinetic parameters kcat, Km and Ki},
elocation-id = {2024.03.10.584340},
year = {2024},
doi = {10.1101/2024.03.10.584340},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2024/03/26/2024.03.10.584340},
eprint = {https://www.biorxiv.org/content/early/2024/03/26/2024.03.10.584340.full.pdf},
journal = {bioRxiv}
@article{Boorla2025CatPred,
author = {Boorla, Veda Sheersh and Maranas, Costas D.},
title = {CatPred: a comprehensive framework for deep learning in vitro enzyme kinetic parameters},
journal = {Nature Communications},
year = {2025},
volume = {16},
number = {2072},
doi = {10.1038/s41467-025-57215-9},
URL = {https://www.nature.com/articles/s41467-025-57215-9}
}
```
11 changes: 0 additions & 11 deletions catpred/web/static/catpred-favicon.svg

This file was deleted.

89 changes: 84 additions & 5 deletions catpred/web/static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,300;0,6..72,400;1,6..72,300;1,6..72,400&family=Outfit:wght@200;300;400;500&family=IBM+Plex+Mono:wght@300;400&display=swap"
rel="stylesheet"
/>
<link rel="icon" href="/static/catpred-favicon.svg" type="image/svg+xml" />
<link rel="stylesheet" href="/static/catpred.css?v=20260309a" />

<link rel="stylesheet" href="/static/catpred.css?v=20260314a" />
</head>
<body>
<div class="texture" aria-hidden="true"></div>
Expand All @@ -40,10 +40,19 @@
</header>

<main>
<section id="predictor" class="studio container reveal snap-section">
<section class="hero reveal show">
<div class="container hero-content">
<span class="hero-badge">Published in Nature Communications</span>
<h1>Predict Enzyme<br><em>Kinetic Parameters</em></h1>
<p class="hero-lead">Deep learning ensemble predictions for kcat, Km, and Ki with built-in uncertainty quantification.</p>
<a href="#predictor" class="btn btn-dark hero-cta">Start predicting →</a>
</div>
</section>

<section id="predictor" class="studio container reveal show snap-section">
<div class="studio-head">
<div class="studio-titleblock">
<h1>Enzyme Kinetics Prediction</h1>
<h2>Enzyme Kinetics Prediction</h2>
<p class="studio-subtitle">kcat, Km, and Ki with uncertainty estimates</p>
</div>

Expand Down Expand Up @@ -107,7 +116,14 @@ <h3>Results</h3>

<div id="resultCards" class="result-cards">
<article class="empty-result">
<p>Run a prediction to see kinetic estimates here.</p>
<div class="empty-result-icon" aria-hidden="true">
<svg viewBox="0 0 48 48" width="48" height="48" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="24" cy="24" r="18" stroke="currentColor" stroke-width="1" stroke-dasharray="4 3" opacity="0.4"/>
<path d="M17 30c2-4.5 4-8 7-10 3 2 5 5.5 7 10" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" opacity="0.35"/>
<circle cx="24" cy="18" r="2.5" stroke="currentColor" stroke-width="1" opacity="0.3"/>
</svg>
</div>
<p>Run a prediction to see kinetic<br>estimates here.</p>
</article>
</div>

Expand All @@ -121,8 +137,71 @@ <h3>Results</h3>
</div>
</section>

<section class="section how-it-works reveal">
<div class="container">
<div class="section-head centered">
<h2>How It Works</h2>
<p class="muted">Three steps to enzyme kinetics predictions</p>
</div>
<div class="step-cards">
<article class="step-card">
<span class="step-number">01</span>
<h3>Enter Data</h3>
<p>Provide substrate SMILES notation and enzyme amino acid sequence for each entry.</p>
</article>
<article class="step-card">
<span class="step-number">02</span>
<h3>Run Prediction</h3>
<p>Our deep learning ensemble processes inputs through multiple model checkpoints.</p>
</article>
<article class="step-card">
<span class="step-number">03</span>
<h3>Get Results</h3>
<p>Receive predicted kinetic parameters with uncertainty estimates and detailed metrics.</p>
</article>
</div>
</div>
</section>

<section class="section section-alt citation-section reveal">
<div class="container">
<div class="section-head centered">
<h2>Peer-Reviewed Research</h2>
<p class="muted">CatPred is backed by rigorous scientific methodology</p>
</div>
<div class="citation-card">
<div class="citation-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>
</svg>
</div>
<div class="citation-body">
<h3>CatPred: A comprehensive framework for deep learning in vitro enzyme kinetic parameters kcat, Km and Ki</h3>
<p>Nature Communications, 2025 &mdash; Veda Sheersh Boorla, Costas D. Maranas</p>
<a class="citation-link" href="https://www.nature.com/articles/s41467-025-57215-9" target="_blank" rel="noreferrer">Read the paper →</a>
</div>
</div>
</div>
</section>

</main>

<footer class="site-footer">
<div class="container">
<div class="footer-inner">
<div class="footer-brand">
<span class="brand-word">CatPred</span>
<p>Maranas Group &middot; Penn State University</p>
</div>
<nav class="footer-nav" aria-label="Footer navigation">
<a href="https://www.nature.com/articles/s41467-025-57215-9" target="_blank" rel="noreferrer">Paper</a>
<a href="https://github.com/maranasgroup/catpred/" target="_blank" rel="noreferrer">GitHub</a>
</nav>
</div>
<p class="footer-copy">&copy; 2025 Maranas Group, Penn State University. All rights reserved.</p>
</div>
</footer>

<a class="mobile-stick" href="#predictor">Run prediction</a>

<script src="/static/catpred.js?v=20260301a"></script>
Expand Down
Loading