PaDELPy: A Python wrapper for PaDEL-Descriptor software
PaDELPy provides a Python wrapper for the PaDEL-Descriptor molecular descriptor calculation software. It exposes the PaDEL-Descriptor command-line interface to Python for computing descriptors and fingerprints from SMILES, MDL MolFiles, and SDF files.
Installation
Install from PyPI:
pip install padelpy
Or from a clone of this repository:
git clone https://github.com/ecrl/padelpy
cd padelpy
pip install .
Requirements
- Python 3.10+ (see package classifiers)
- A system Java JRE 8+ on
PATH(java -versionshould succeed). Continuous integration uses Eclipse Temurin 17.
PaDEL-Descriptor is bundled with PaDELPy, so a separate PaDEL download is not required. The project has no default Python dependencies beyond the standard library. Wheels are large (approximately 20+ MB) because they include the vendored PaDEL JAR and libraries.
Related projects
PaDELPy is a thin wrapper around the PaDEL-Descriptor Java engine. Other tools compute related molecular features with different engines or APIs:
- Mordred — RDKit-based descriptor calculator (different engine and dependency stack)
- RDKit descriptors and fingerprints — core cheminformatics toolkit (different descriptor set)
- padelpy2 — alternate PaDEL wrapper with an RDKit/pandas-oriented API (not drop-in compatible)
Basic usage
PaDELPy provides helpers for SMILES, MDL MolFile, and SDF inputs, plus a
lower-level padeldescriptor wrapper for direct CLI control.
SMILES to descriptors / fingerprints
from_smiles accepts a SMILES string or a list of SMILES strings. A single
input returns a mapping of descriptor or fingerprint names to values; a list
returns a list of such mappings.
from padelpy import from_smiles
# molecular descriptors for propane
descriptors = from_smiles("CCC")
# propane and butane
descriptors = from_smiles(["CCC", "CCCC"])
# descriptors plus PubChem fingerprints
desc_fp = from_smiles("CCC", fingerprints=True)
# fingerprints only
fingerprints = from_smiles("CCC", fingerprints=True, descriptors=False)
# one worker thread
descriptors = from_smiles(["CCC", "CCCC"], threads=1)
# also write a CSV
_ = from_smiles("CCC", output_csv="descriptors.csv")
MDL MolFile to descriptors / fingerprints
from_mdl accepts a path to an MDL MolFile and returns a list of mappings, one
per molecule in file order.
from padelpy import from_mdl
descriptors = from_mdl("mols.mdl")
desc_fp = from_mdl("mols.mdl", fingerprints=True)
fingerprints = from_mdl("mols.mdl", fingerprints=True, descriptors=False)
desc_fp = from_mdl("mols.mdl", threads=1)
_ = from_mdl("mols.mdl", output_csv="descriptors.csv")
SDF to descriptors / fingerprints
from_sdf accepts a path to an SDF file and returns a list of mappings, one per
molecule in file order.
from padelpy import from_sdf
descriptors = from_sdf("mols.sdf")
desc_fp = from_sdf("mols.sdf", fingerprints=True)
fingerprints = from_sdf("mols.sdf", fingerprints=True, descriptors=False)
desc_fp = from_sdf("mols.sdf", threads=1)
_ = from_sdf("mols.sdf", output_csv="descriptors.csv")
Command-line wrapper
padeldescriptor forwards keyword arguments to the PaDEL-Descriptor CLI.
Any combination of supported flags may be supplied.
from padelpy import padeldescriptor
padeldescriptor(config="path/to/config")
padeldescriptor(mol_dir="molecules.mdl", d_file="descriptors.csv")
padeldescriptor(mol_dir="molecules.sdf", d_file="descriptors.csv")
padeldescriptor(mol_dir="molecules.smi", d_file="descriptors.csv")
padeldescriptor(mol_dir="path/to/mols/", d_file="descriptors.csv")
padeldescriptor(
mol_dir="molecules.smi",
d_file="descriptors.csv",
d_2d=True,
d_3d=True,
fingerprints=True,
convert3d=True,
descriptortypes="path/to/descriptortypes",
detectaromaticity=True,
log=True,
removesalt=True,
retain3d=True,
retainorder=True,
standardizenitro=True,
standardizetautomers=True,
tautomerlist="path/to/tautomers",
usefilenameasmolname=True,
maxcpdperfile=32,
maxruntime=10000,
waitingjobs=10,
threads=2,
headless=True,
)
Contributing, reporting issues, and support
To contribute, open a pull request. New features should include tests and clear documentation.
To report bugs or request features, file a GitHub issue. Include error messages,
operating system, Java version (java -version), and Python version when
reporting problems.
For additional questions, contact Travis Kessler (travis.j.kessler@gmail.com).
Release files for padelpy 0.1.17
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| padelpy-0.1.17.tar.gz | 20.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| padelpy-0.1.17-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.8 MB
Release files / padelpy-0.1.17.tar.gz
| Download URL | padelpy-0.1.17.tar.gz |
|---|---|
| Size | 20.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e08e9bc0a6a989d4df034625e64e017915f0501a88549406d9131405bf7803ff
|
|
BLAKE2b-256 checksum How to use checksums |
67ac77f7f9ba8e59aa52eb6f5c40eb0d7f7ab5bcfcef326048b4c94ec75a6a87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logRelease files / padelpy-0.1.17-py3-none-any.whl
| Download URL | padelpy-0.1.17-py3-none-any.whl |
|---|---|
| Size | 20.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a1d61e0f824807bd2d6145277dc76a483f5e66d183a6ae1d1f5e2f5dadfed69
|
|
BLAKE2b-256 checksum How to use checksums |
7863b825f02b52ead3b895118f5356f6078a2763685c5e468242b073862f5c49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency log