AqAquaScope/ molecular intelligence

APPLIED MACHINE LEARNING · PORTFOLIO PROJECT

Small molecules.
Big questions.

How well does a molecule dissolve in water? AquaScope connects chemical structure to predictive models—and makes the science visible.

Python / RDKit / scikit-learn / PyTorch / TensorFlow

STRUCTURE → PROPERTY01 / CAFFEINE
Chemical structure of caffeine, rendered with RDKit
C₈H₁₀N₄O₂
A familiar molecule. A useful starting point.
8 descriptors

1,059 unique benchmark molecules

3 machine-learning frameworks

212 held-out test molecules

01 / EXPLORE

From a structure
to an estimate.

Choose a molecule to inspect a saved prediction from the project’s random forest. These are precomputed examples, not live inference.

Caffeine chemical structure

RANDOM FOREST · SAVED OUTPUT

Caffeine

— logS

Molecular weight
—
Calculated LogP
—
Benchmark membership
—

logS is log₁₀(solubility in mol/L). A one-unit increase means ten times the solubility. Estimates are educational, not laboratory measurements.

Bring your own molecule.

The full Python application accepts SMILES, renders structures, compares models, and exports predictions.

Live app deployment in preparation

02 / EVIDENCE

Show the work.
Measure the result.

One Delaney/ESOL benchmark. The same eight descriptors. A shared 60/20/20 train, validation, and test split, with seed 42.

Recorded held-out performance from the local validation run
ModelMAE ↓RMSE ↓R² ↑
Mean baseline1.7882.212−0.034
Random forest scikit-learn0.4850.6620.907
Neural network PyTorch0.5150.6740.904
Neural network TensorFlow0.5240.6910.899

MAE and RMSE are in logS units; lower is better. R² is unitless; higher is better. These are results from one random split, not a ranking of ML frameworks or proof of generalization to new chemical families.

Download recorded metrics ↗

03 / ENGINEERING

A complete workflow.
Every step explainable.

01

Understand the chemistry

RDKit validates SMILES and computes eight interpretable features, including molecular weight, LogP, and polar surface area.

02

Build comparable models

scikit-learn supplies a baseline, random forest, splits, and scaling. PyTorch and TensorFlow implement independent neural networks.

03

Make it usable

Streamlit and Plotly turn the workflow into an interactive application with molecular drawings, test-set plots, and CSV exports.

What this experiment can—and cannot—tell us

Duplicate canonical structures are combined before splitting. Scaling uses training data only, and neural early stopping uses validation loss. Test molecules are reserved for reporting.

The model does not account for pH, temperature, crystal form, or measurement protocol. Related structures may appear in different partitions. Descriptor-range checks do not establish a validated applicability domain, and no calibrated confidence interval is claimed.

Data: Delaney (2004), ESOL, distributed by DeepChem. Benchmark data retains its own rights.