datamol - molecular processing made easy
Docs
|
Homepage
---
[](https://zenodo.org/badge/latestdoi/341603042)
[](https://mybinder.org/v2/gh/datamol-io/datamol/main?urlpath=lab/tree/docs/tutorials/The_Basics.ipynb)
[](https://pypi.org/project/datamol/)
[](https://anaconda.org/conda-forge/datamol)
[](https://pypi.org/project/datamol/)
[](https://anaconda.org/conda-forge/datamol)
[](https://pypi.org/project/datamol/)
[](LICENSE)
[](https://github.com/datamol-io/datamol/stargazers)
[](https://github.com/datamol-io/datamol/network/members)
[](https://codecov.io/gh/datamol-io/datamol)
Datamol is a python library to work with molecules. It's a layer built on top of [RDKit](https://www.rdkit.org/) and aims to be as light as possible.
- đ Simple pythonic API
- âī¸ RDKit first: all you manipulate are `rdkit.Chem.Mol` objects.
- â
Manipulating molecules often relies on many options; Datamol provides good defaults by design.
- đ§ Performance matters: built-in efficient parallelization when possible with an optional progress bar.
- đšī¸ Modern IO: out-of-the-box support for remote paths using `fsspec` to read and write multiple formats (sdf, xlsx, csv, etc).
## Try Online
Visit [](https://mybinder.org/v2/gh/datamol-io/datamol/main?urlpath=lab/tree/docs/tutorials/The_Basics.ipynb) and try Datamol online.
## Documentation
Visit .
## Updates
Datamol 0.13.0 modernizes the supported scientific Python
stack while keeping the library focused on reliable molecular processing. It
adds RDKit binary and property-dictionary interchange, enforces conformer RMS
cutoffs with symmetry-aware alignment, fixes reported RDKit compatibility
issues, and separates optional I/O and visualization dependencies from the
core installation.
See the [complete changelog](CHANGELOG.md) for all notable changes and the
[0.13.0 upgrade guide](docs/migration.md) for compatibility and transition
details.
## Installation
Add Datamol to a uv-managed project:
```bash
uv add datamol
```
Pip and conda-forge remain supported:
```bash
python -m pip install datamol
mamba install -c conda-forge datamol
```
Datamol 0.13.0 requires Python 3.11 or newer and RDKit 2024.09 or newer. Cloud
I/O (S3, Google Cloud), Excel/Parquet, visualization and SELFIES support are all
included by default â there are no feature extras to install.
## Quick API Tour
```python
import datamol as dm
# Common functions
mol = dm.to_mol("O=C(C)Oc1ccccc1C(=O)O", sanitize=True)
fp = dm.to_fp(mol)
selfies = dm.to_selfies(mol)
inchi = dm.to_inchi(mol)
# Standardize and sanitize
mol = dm.to_mol("O=C(C)Oc1ccccc1C(=O)O")
mol = dm.fix_mol(mol)
mol = dm.sanitize_mol(mol)
mol = dm.standardize_mol(mol)
# Dataframe manipulation
df = dm.data.freesolv()
mols = dm.from_df(df)
# 2D viz
legends = [dm.to_smiles(mol) for mol in mols[:10]]
dm.viz.to_image(mols[:10], legends=legends)
# Generate conformers
smiles = "O=C(C)Oc1ccccc1C(=O)O"
mol = dm.to_mol(smiles)
mol_with_conformers = dm.conformers.generate(mol)
# 3D viz (using nglview)
dm.viz.conformers(mol, n_confs=10)
# Compute SASA from conformers
sasa = dm.conformers.sasa(mol_with_conformers)
# Easy IO
mols = dm.read_sdf("s3://my-awesome-data-lake/smiles.sdf", as_df=False)
dm.to_sdf(mols, "gs://data-bucket/smiles.sdf")
```
## How to cite
Please cite Datamol if you use it in your research: [](https://zenodo.org/badge/latestdoi/341603042).
## Compatibilities
Version compatibilities are an essential topic for production-software stacks. We are cautious about documenting compatibility between `datamol`, `python` and `rdkit`.
See below the associated versions of Python and RDKit, for which a minor version of Datamol **has been tested** during its whole lifecycle. _It does not mean other combinations does not work but that those are not tested._
| `datamol` | `python` | `rdkit` |
| --------- | ------------------- | ----------------------------- |
| `0.13.x` | `[3.11, 3.12, 3.13, 3.14]` | `[2024.09, 2025.03, 2025.09, 2026.03]` |
| `0.12.x` | `[3.10, 3.11]` | `[2023.03, 2023.09]` |
| `0.11.x` | `[3.9, 3.10, 3.11]` | `[2022.09, 2023.03]` |
| `0.10.x` | `[3.9, 3.10, 3.11]` | `[2022.03, 2022.09]` |
| `0.9.x` | `[3.9, 3.10, 3.11]` | `[2022.03, 2022.09]` |
| `0.8.x` | `[3.8, 3.9, 3.10]` | `[2021.09, 2022.03, 2022.09]` |
| `0.7.x` | `[3.8, 3.9]` | `[2021.09, 2022.03]` |
| `0.6.x` | `[3.8, 3.9]` | `[2021.09]` |
| `0.5.x` | `[3.8, 3.9]` | `[2021.03, 2021.09]` |
| `0.4.x` | `[3.8, 3.9]` | `[2020.09, 2021.03]` |
| `0.3.x` | `[3.8, 3.9]` | `[2020.09, 2021.03]` |
## CI Status
The CI runs tests and performs code quality checks for the following combinations:
- Linux x86-64, Windows x86-64, macOS Apple Silicon and macOS Intel.
- Python 3.11 through 3.14 on Linux.
- The supported RDKit release series from 2024.09 through 2026.03.
- The latest supported stack on every operating-system and architecture lane.
| | `main` |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Lib build & Testing | [](https://github.com/datamol-io/datamol/actions/workflows/test.yml) |
| Code Sanity (formatting and linting) | [](https://github.com/datamol-io/datamol/actions/workflows/code-check.yml) |
| Documentation Build | [](https://github.com/datamol-io/datamol/actions/workflows/doc.yml) |
## License
Under the Apache-2.0 license. See [LICENSE](LICENSE).