Python API · stjames models · API example
Predict how readily a small molecule crosses a membrane. GNN-MTL estimates apparent permeability in a Caco-2 cell assay from molecular connectivity. PyPermm estimates passive permeability from a 3D structure and shows how the energy changes as the molecule moves through a membrane.
GNN-MTL is a graph neural network trained jointly on permeability and efflux measurements. Rowan currently reports its Caco-2 apparent-permeability endpoint. This reflects the experimental assay represented by the training data; predictions for unfamiliar chemical structures may be less reliable.
The result is the base-10 logarithm of apparent permeability in cm/s. For example, a value of −5 corresponds to cm/s. This differs from reporting the permeability directly in units of cm/s, a convention often used in assay data.
For full model details, see the paper by Philip Ivers Ohlsson and co-workers.
PyPermm is a Python implementation of PerMM. It estimates the energy cost of transferring the supplied molecular structure from water into a membrane, optimizing its orientation at each membrane depth. The resulting energy profile is used to predict passive permeability.
Results include intrinsic permeability estimates for lipid bilayers (BLM), PAMPA artificial membranes, plasma membranes, Caco-2 membranes, and the blood–brain barrier. The energy profile plots membrane position in Å against insertion energy in kcal/mol. The supplied 3D geometry influences these predictions, and passive permeability alone does not capture transporter-mediated uptake or efflux.
Here, denotes a permeability coefficient; octanol–water partitioning is a separate property.
The full PyPermm code is available under an MIT license on GitHub.
In our permeability benchmarks, GNN-MTL and PyPermm achieved ROC-AUC values of 0.77 and 0.71 on 837 compounds from the cleaned Wang Caco-2 dataset. GNN-MTL performed better on conventional small molecules, while PyPermm was more competitive for cyclic peptides and macrocycles. Performance depends on chemical space and assay conditions.

Separation of higher- and lower-permeability compounds, using a cutoff of −5 for log10 of experimental permeability in cm/s. Higher AUC indicates better separation.