Target Caco-2 permeability, LogD and plasma protein binding:
LogD
Caco-2 permeability Papp A→B
Caco-2 permeability Papp B→A
mouse plasma protein binding (MPPB)
human plasma protein binding (HPPB)
Endpoint log₁₀-scaled permeability, LogD and percent unbound
Data source ChEMBL aggregated deposition in OpenADMET data-catalogs
Featurizer ChemPropFeaturizer with target normalization
Model ChemPropModel, initialized from CheMeleon weights (from_chemeleon: true), 5 tasks, 3-layer FFN of width 512, dropout 0.25
Split ShuffleSplitter, train_size: 1.0, random_state: 42
Trained with openadmet-models via openadmet anvil

This is a model trained on publicly available data. While we've done our best to curate the data, the model performance can still improve. Proceed with caution.

In this repo, we have our baseline model for Caco-2 permeability, LogD and plasma protein binding. It is a multitask CheMeleon model trained on log₁₀-scaled permeability, LogD and percent unbound data curated from ChEMBL for the following targets: LogD, Caco-2 permeability Papp Aβ†’B, Caco-2 permeability Papp Bβ†’A, mouse plasma protein binding (MPPB), human plasma protein binding (HPPB).

Update Notice: We have released an updated version of the model (v2) featuring enhanced curation of the ChEMBL training set. Key improvements include the exclusion of censored data (non-explicit modifiers like < or >) to ensure high-fidelity regression and optimized outlier filtering. The legacy version remains accessible via the commit history.

This model predicts log⁑10(Papp)\log_{10}(P_{app}) values (on log⁑10(cm/s)\log_{10}(\text{cm/s})) for the Caco-2 endpoints. To get PappP_{app} values in 10βˆ’6cm/s10^{-6} \text{cm/s}, backtransform:

Papp=10y^βˆ—106 P_{app} = 10^{\hat{y}} * 10^{6}

For the protein binding endpoints, the model predicts log⁑10(%unbound)\log_{10}(\% \text{unbound}). To get PPB values from %bound, subtract 100βˆ’%bound100 - \% \text{bound}.

Comparative performance on the ExpansionRx dataset is written up here. The compounds used in that comparison come from the OpenADMET-ExpansionRx challenge.

It is a no split model, meaning it has been trained with no data allocated to validation and test sets and with just a training set fraction of 1.0. The training set contains 28,497 compounds.

Getting Started

We highly recommend you have the Anvil framework from openadmet-models installed in an environment (called openadmet-models) for ease of use and full utilization of OpenADMET's models. For full documentation, visit our website here. If you'd like to see some more examples on how to use Anvil, see our demos here.

Option A: Downloading & running the model with Github

  1. You can install openadmet-models via our GitHub package. If you want the latest development version, clone the repository and install in editable mode:
git clone git@github.com:OpenADMET/openadmet-models.git
  1. Set up an environment using the provided files in devtools/conda-envs.
cd openadmet-models/
conda env create -f devtools/conda-envs/openadmet-models.yaml
conda activate openadmet-models
pip install -e .
  1. If you want to use GPU acceleration, ensure you have the appropriate CUDA toolkit installed and use the openadmet-models-cuda.yaml file instead:
conda env create -f devtools/conda-envs/openadmet-models-gpu.yaml
conda activate openadmet-models
pip install -e .
  1. IMPORTANT NOTE You will also need git lfs installed.

  2. After installing Anvil, clone the model repo:

git clone https://huggingface.co/openadmet/permeability-logd-ppb-chemeleon-baseline/
  1. Change to the repo directory. Ensure you have git lfs installed for the repo and get the large model files:
git lfs install
git lfs pull
  1. You are now ready to use the model!

Option B: Downloading & running the model with Docker

Alternatively, you can also use Docker to spin up a containerized pre-installed environment to run openadmet-models. Just be sure you are mounting the correct folder (./permeability-logd-ppb-chemeleon-baseline) where you've downloaded the model.

If you're using a gpu, run:

docker run -it --user=root --rm  \
    -v ./permeability-logd-ppb-chemeleon-baseline:/home/mambauser/model:rw \
    --runtime=nvidia \
    --gpus all \
    ghcr.io/openadmet/openadmet-models:main

Otherwise, for cpu only:

docker run -it --user=root --rm  \
    -v ./permeability-logd-ppb-chemeleon-baseline:/home/mambauser/model:rw \
    ghcr.io/openadmet/openadmet-models:main

Using the model

We will use this model for inference, aka predict the log₁₀-scaled endpoint values of a set of molecular compounds unseen to the model. For demonstration purposes, we have provided a small subset of compounds from a ZINC deck in the file compounds_for_inference.csv.

The generic command to run our inference pipeline is:

openadmet predict \
    --input-path <the path to the data to predict on> \
    --input-col <the column to of the data to predict on, often SMILES> \
    --model-dir <the anvil_training directory of the model to predict with> \
    --output-csv <the path to an output CSV to save the predictions to> \
    --accelerator <whether to use gpu or cpu, defaults to gpu>

You can run this directly in your command line, OR you can use the bash script we've provided, run_model_inference.sh.

For our working example, this command becomes:

openadmet predict \
    --input-path compounds_for_inference.csv \
    --input-col OPENADMET_CANONICAL_SMILES \
    --model-dir anvil_training/ \
    --output-csv predictions.csv \
    --accelerator cpu

You can easily substitute your own set of compounds, simply modify the --input-path and --input-col arguments for your specific dataset.

In our example, this outputs a file called predictions.csv which will have predicted (the OADMET_PRED columns) log₁₀-scaled endpoint values for each of the five endpoints the model was trained on:

OADMET_PRED_chemprop_logD,
OADMET_STD_chemprop_logD,
OADMET_PRED_chemprop_caco2_atob_LogPapp,
OADMET_STD_chemprop_caco2_atob_LogPapp,
OADMET_PRED_chemprop_caco2_btoa_LogPapp,
OADMET_STD_chemprop_caco2_btoa_LogPapp,
OADMET_PRED_chemprop_mppb_LogUnbound,
OADMET_STD_chemprop_mppb_LogUnbound,
OADMET_PRED_chemprop_hppb_LogUnbound,
OADMET_STD_chemprop_hppb_LogUnbound

NOTE In this example, the standard deviation (OADMET_STD) columns are empty because uncertainty cannot be estimated unless running inference on an ensemble of models. For further details, visit our demo specifically about ensembling.

Downloads last month
68
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Spaces using openadmet/permeability-logd-ppb-chemeleon-baseline 2