ADMET Builder

From DISI
Jump to navigation Jump to search

ADMET Builder (OpenADMET)

Introduction

ADMET builder webpage.png

As of 7/6/26, ADMET Builder is an internal Irwin Lab web tool for submitting one or more compounds in SMILES format and receiving OpenADMET prediction results.

The current backend runs on C7 using the `openadmet-models` conda environment.

ADMET Builder returns:

  • Molecular formula
  • SMILES string
  • RDKit-generated 2D structure image
  • logD
  • Caco-2 A to B permeability
  • Caco-2 B to A permeability
  • Mouse plasma protein binding
  • Human plasma protein binding
  • Downloadable CSV output
Results.png

Created by Benjamin "Ben" Romero (Undergrad Northwestern University '29), Summer 2026.
Developed in the Irwin Lab at UCSF.

How to Login

Log into C7:

ssh USER@epsilon.compbio.ucsf.edu

Confirm location:

hostname
pwd

How to Open Website With SwitchyOmega

If using SwitchyOmega, use:

Protocol: SOCKS5
Host: localhost
Port: 1074

Then open:

http://169.230.26.173:8501

If the SOCKS proxy is not running, start it from a Mac terminal:

ssh -f -N -D 1074 USER@epsilon.compbio.ucsf.edu

When finished, switch SwitchyOmega back to Direct.

Where The Website Lives

Project directory on C7:

~/openadmet/admet-builder

Important files:

app.py
static/index.html
static/styles.css
static/app.js
.gitignore

Repository

GitLab repository:

https://gitlab.docking.org/USERNAME/admet-builder

Clone using HTTPS:

git clone https://gitlab.docking.org/USERNAME/admet-builder.git
cd admet-builder

Clone using SSH:

git clone git@gitlab.docking.org:USERNAME/admet-builder.git
cd admet-builder

Environment

The backend uses the OpenADMET conda environment:

module load anaconda3/2025.06.0
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate openadmet-models

Python dependencies include:

  • Flask
  • pandas
  • RDKit
  • OpenADMET models package

The OpenADMET model directory is expected at:

~/openadmet/permeability-logd-ppb-chemeleon-baseline/anvil_training

How to Start Backend

On C7:

module load anaconda3/2025.06.0
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate openadmet-models
cd ~/openadmet/admet-builder
python app.py

The backend runs on:

http://0.0.0.0:8501

The browser URL is:

http://169.230.26.173:8501

Test from C7:

curl http://127.0.0.1:8501

How to Keep Backend Running

Use screen:

screen -S admet-builder
module load anaconda3/2025.06.0
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate openadmet-models
cd ~/openadmet/admet-builder
python app.py

Detach:

Ctrl-A
D

Reconnect:

screen -r admet-builder

List screens:

screen -ls

Stop backend:

screen -r admet-builder
Ctrl-C
exit

Test Input

Example SMILES input:

CCO
c1ccccc1
CC(=O)Oc1ccccc1C(=O)O

Larger test molecule:

CC(C)Cc1ccc(cc1)[C@@H](C)C(=O)O

Test API With curl

Test the API from C7:

curl -X POST http://127.0.0.1:8501/predict-smiles \
  -H "Content-Type: application/json" \
  -d '{"smiles":["CCO","c1ccccc1","CC(=O)Oc1ccccc1C(=O)O"]}'

Current API Endpoint

Main endpoint:

POST /predict-smiles

Example JSON request:

{
  "smiles": [
    "CCO",
    "c1ccccc1",
    "CC(=O)Oc1ccccc1C(=O)O"
  ]
}

Example response contains:

{
  "csv": "...",
  "rows": [],
  "columns": []
}

The frontend uses this response to display the results table and automatically download the CSV.

How It Works

ADMET Builder has three major parts:

Layer Technology Purpose
Frontend HTML, CSS, JavaScript User interface, SMILES input, results table, and structure image display
Backend API Flask Receives SMILES, runs predictions, and returns results
Prediction Engine OpenADMET Generates ADMET predictions from molecular input

Backend flow:

  1. Receives SMILES strings from the website.
  2. Converts the SMILES into a temporary CSV file.
  3. Runs the OpenADMET command-line prediction tool.
  4. Reads the OpenADMET output CSV.
  5. Uses RDKit to calculate molecular formulas.
  6. Uses RDKit to generate 2D molecular structure images.
  7. Sends results back to the web interface as JSON.
  8. Provides the same results as a downloadable CSV file.

Modularity

ADMET Builder is modular by design. The frontend, backend, and prediction engine are separated so each part can be reused or replaced.

This means:

  • The frontend can be redesigned without changing the model logic.
  • The Flask backend can support new endpoints.
  • Additional OpenADMET models can be added later.
  • Other chemistry tools can be wrapped using the same backend pattern.
  • The results table can be adapted for different prediction outputs.
  • The SMILES-to-structure display can be reused in other cheminformatics apps.
  • The app can serve as a template for future scientific web interfaces.

Because of this structure, ADMET Builder can be used both as a working lab tool and as a starting point for other modular research software.

Output

The output table includes:

Column Meaning
Molecule Molecular formula calculated from the SMILES string
SMILES Input molecule string
Structure Image RDKit-generated 2D molecular structure
logD Predicted distribution coefficient
Caco-2 A to B Predicted apical-to-basolateral permeability
Caco-2 B to A Predicted basolateral-to-apical permeability
Mouse PPB Predicted mouse plasma protein binding
Human PPB Predicted human plasma protein binding

The CSV download contains the same prediction values in a machine-readable format.

Troubleshooting

Site Cannot Be Reached

Check that:

  • Backend is running on C7.
  • The app is running on port 8501.
  • SwitchyOmega is set to SOCKS5 localhost port 1074.
  • The browser is using:
http://169.230.26.173:8501

SwitchyOmega Proxy Error

If Chrome says the proxy failed, the SOCKS proxy may not be running.

Start it from a Mac terminal:

ssh -f -N -D 1074 USER@epsilon.compbio.ucsf.edu

SwitchyOmega should be:

Protocol: SOCKS5
Host: localhost
Port: 1074

Port Already In Use

Check port 8501:

ss -ltnp | grep 8501

Only kill processes owned by you:

kill PID_NUMBER

Missing pandas or Flask

This usually means the conda environment is not active.

Run:

module load anaconda3/2025.06.0
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate openadmet-models

RDKit Image Error

Make sure the app is running inside the `openadmet-models` environment, which includes RDKit.

Test RDKit:

python -c "from rdkit import Chem; print('rdkit works')"

Notes

ADMET Builder is a research tool. Its predictions are intended for screening, comparison, prioritization, and exploration.

Results should not be treated as experimental measurements.

For office-wide use without SSH/SOCKS tunnels, ADMET Builder should eventually be placed behind an internal hostname or proxy.

Attribution

Created by Benjamin "Ben" Romero (Undergrad Northwestern University '29), Summer 2026.
Developed in the Irwin Lab at UCSF.
Released as part of an open-source UCSF research tool; please credit the creator and lab when using or adapting this work.