Download
The four production models, the environment they were built under, and the script that runs them.
The model bundle
One archive carries all four models and everything needed to run them: percent human intestinal absorption, permeability across Caco-2 monolayers for small molecules and for cyclic peptides, and permeability across an artificial membrane.
| File | Bytes | SHA256 |
|---|---|---|
| predicthia-models-2026-10-02.tar.gz | 34,174,196 | 252d3a61eeae23a3db9f733d74ae475313839a15605e0fe0cebb66c394eebbac |
Checksums are also served at
/models/SHA256SUMS. Verify with
shasum -a 256 -c SHA256SUMS.
What is inside
| Path | What it is |
|---|---|
| chia_predict.py | the predictor, a command line tool and importable |
| build_shim.py | the descriptor blocks, lifted from the build pipeline unchanged |
| models/hia.joblib | the absorption model |
| models/caco2sm.joblib | the Caco-2 small molecule model, 55 descriptors |
| models/pep_caco2.joblib | the Caco-2 cyclic peptide model, 50 descriptors |
| models/pep_passive.joblib | the artificial membrane model |
| models/<key>_stats.json | every published statistic, under frozen_consensus_set |
| models/manifest.json | one machine readable entry per endpoint |
| environment.yml | the conda environment, with both versions pinned |
| requirements.txt | the same pins for pip |
| examples.smi | ten absorption compounds with their measured values, for a smoke test |
| examples_peptides.smi | five Caco-2 peptides, for the same check on the peptide model |
| examples_caco2sm.smi | ten small molecules with their measured values, one per decile of the Caco-2 range |
How to run it
tar -xzf predicthia-models-2026-10-02.tar.gz
cd predicthia-models-2026-10-02
conda env create -f environment.yml
conda activate predicthia
python chia_predict.py --model hia --smiles "CC(=O)Nc1ccc(O)cc1"
python chia_predict.py --model pep_caco2 --smiles-file examples_peptides.smi
python chia_predict.py --model caco2sm --smiles-file examples_caco2sm.smi
Each input line returns one JSON object: the prediction, its units, the mean distance to its five nearest training compounds, whether that distance is inside the domain, and the threshold it was judged against. A molecule that cannot be parsed, or whose conformer will not embed, returns an error on its own line and does not stop the rest of the file.
Check it worked
python chia_predict.py --model hia --smiles-file examples.smi
Ten lines, each with a prediction and no error. Those ten are training compounds, so they show the pipeline is wired correctly rather than measuring accuracy.
Why the versions are pinned
Two pins travel with the models and both matter: RDKit 2025.09.5 for the descriptors and scikit-learn 1.9.1 for the model files. They are in the requirements.txt and the environment.yml inside the archive.
Descriptor values depend on the RDKit release, and a different release changes them with no error and no exception, which would move predictions without anything appearing to break. The predictor checks the release when it starts and refuses to run on another one. The absorption model also reads descriptors defined on an embedded conformer, and which conformer wins is decided by an energy comparison, so the same molecule can land a few tenths of a percent apart on a different processor architecture. That is well inside the model's own error, and it is why the pins are part of the method rather than a convenience.
The datasets
The four sets the models were fitted on, exactly as modeled, so the counts here match the model pages and the paper.
| File | Bytes | SHA256 |
|---|---|---|
| chia-datasets-03Oct2026.zip | 218,215 | bae734bcbe0a37803afd58c0701204d37c855a21474add55df03aa02176f6f78 |
| Inside | Rows | Endpoint | Units |
|---|---|---|---|
| absorption_780.csv | 780 | percent of an oral dose absorbed in man | percent absorbed, 0 to 100 |
| caco2_small_molecules_3771.csv | 3,771 | small molecule permeability, Caco-2 monolayer | log10 Papp, cm/s |
| peptides_caco2_1281.csv | 1,281 | cyclic peptide permeability, Caco-2 monolayer | log10 Papp, cm/s |
| peptides_artificial_membrane_7298.csv | 7,298 | cyclic peptide permeability, artificial membrane | log10 Papp, cm/s |
The zip carries a README naming the original sources, the COSMOS compilation for absorption, CycPeptMPDB for the peptides and the OpenADMET-ExpansionRx challenge for the small molecules, what was done to each set, and the citations. Checksums are also at /data/SHA256SUMS.
The small molecule Caco-2 set
The 3,771 small molecules behind the caco2sm model come from the OpenADMET-ExpansionRx challenge, full post-challenge release, contributed by Expansion Therapeutics and released by the OpenADMET consortium under CC-BY-4.0. The originator publishes it at openadmet.org/datasetsmodels. It is included in the archive above as modeled, with the permeability converted to log10 Papp, and the README records that conversion.
Two things to know before you model these
A permeability of exactly -10.00 is a below-detection placeholder, not a measurement. It appears for 21 peptides in the Caco-2 file and 269 in the artificial membrane file. Treating those as measured values will drag any fit toward a number nobody observed.
The two peptide files share 588 compounds, measured in different assays, and must not be pooled. Comparing the two files row by row says nothing, because most of those pairs come from different studies. Where a single study ran both, on 229 peptides, the assays correlate 0.62 with the artificial membrane value about half a log unit below the Caco-2 value. That is a systematic difference between two experiments, not noise that averaging removes.