Skip to main content
scikit-fingerprints

PyPI version Downloads Monthly downloads License Python versions Contributors

The scikit-learn compatible library for molecular fingerprints and chemoinformatics.

Easily and efficiently compute molecular fingerprints, molecular filters, distances & similarity measures, and more.

Go from SMILES to production-grade chemoinformatics ML pipelines in a few lines of code.

Documentation · Examples & tutorials · API Reference · Publication


Table of Contents


Install

You can install from PyPI, using pip or uv.

pip install scikit-fingerprints

If you want to use neural fingerprints (embeddings from pretrained neural networks), install optional dependencies with:

pip install "scikit-fingerprints[neural]"

See INSTALL.md for more details.

If you need bleeding-edge features and don't mind potentially unstable or undocumented functionalities, you can also install directly from GitHub:

pip install git+https://github.com/MLCIL/scikit-fingerprints.git

Python versions from 3.10 to 3.13 are supported on all major operating systems. Tests are run on Linux Ubuntu, Windows, and macOS.

Quickstart

Simply input SMILES strings into the molecular fingerprint instance:

from skfp.fingerprints import ECFPFingerprint

smiles = ["O=S(=O)(O)CCS(=O)(=O)O", "O=C(O)c1ccccc1O"]

fp = ECFPFingerprint()
X = fp.transform(smiles)  # SMILES in, NumPy array out

Build a full molecular ML pipeline with scikit-learn:

from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import make_pipeline, make_union

from skfp.datasets.moleculenet import load_clintox
from skfp.fingerprints import ECFPFingerprint, MACCSFingerprint
from skfp.metrics import extract_pos_proba, multioutput_auroc_score
from skfp.model_selection import scaffold_train_test_split
from skfp.preprocessing import MolFromSmilesTransformer

smiles, y = load_clintox()
smiles_train, smiles_test, y_train, y_test = scaffold_train_test_split(
    smiles, y, test_size=0.2
)

pipeline = make_pipeline(
    MolFromSmilesTransformer(),
    make_union(ECFPFingerprint(count=True), MACCSFingerprint()),
    RandomForestClassifier(random_state=0),
)
pipeline.fit(smiles_train, y_train)

y_pred_proba = extract_pos_proba(pipeline.predict_proba(smiles_test))
print(f"AUROC: {multioutput_auroc_score(y_test, y_pred_proba):.2%}")

Key features

  • Molecular fingerprints

    • over 30, e.g. ECFP, Avalon, MACCS, Mordred, PubChem
    • all with a uniform .transform() API
  • Molecular filters

    • over 30, e.g. Lipinski Rule of 5, PAINS, REOS
    • both substructural and physicochemical
  • Similarity & distance measures

    • 14 measures, e.g. Tanimoto, Dice, MCS
    • compatible with kNN, UMAP, HDBSCAN, and other distance-based models
    • efficient bulk similarity distribution computation
  • Applicability domain checks

    • 11 methods, e.g. kNN, centroid distance, TOPKAT
    • evaluate the reliability of algorithms for new molecules
  • Benchmark datasets

    • MoleculeNet, Therapeutics Data Commons, MoleculeACE, and LRGB
    • train-test splits built-in
  • Native scikit-learn integration

    • use Pipeline, FeatureUnion, GridSearchCV, and more
    • build, save, and deploy ML pipelines for chemoinformatics
  • Other features

    • fast and efficient: parallelized, sparse matrices support, C++ RDKit under the hood
    • efficient hyperparameter tuning with fingerprints caching
    • MIT licensed, permissive academic and commercial use

Tutorials

Step-by-step Jupyter notebooks, both for learning and deploying production-grade features:

  1. Introduction to scikit-fingerprints
  2. Fingerprint types
  3. Molecular pipelines
  4. Conformers and 3D fingerprints
  5. Hyperparameter tuning
  6. Dataset splits
  7. Datasets and benchmarking
  8. Similarity and distance metrics
  9. Molecular filters
  10. Molecular clustering

Publications and citing

Publications using scikit-fingerprints:

  1. J. Adamczyk, W. Czech "Molecular Topological Profile (MOLTOP) -- Simple and Strong Baseline for Molecular Graph Classification" ECAI 2024
  2. J. Adamczyk, P. Ludynia "Scikit-fingerprints: easy and efficient computation of molecular fingerprints in Python" SoftwareX
  3. J. Adamczyk, P. Ludynia, W. Czech "Molecular Fingerprints Are Strong Models for Peptide Function Prediction" ArXiv preprint
  4. J. Adamczyk "Towards Rational Pesticide Design with Graph Machine Learning Models for Ecotoxicology" CIKM 2025
  5. J. Adamczyk, J. Poziemski, F. Job, M. Król, M. Makowski "MolPILE - large-scale, diverse dataset for molecular representation learning" ArXiv preprint
  6. J. Adamczyk, J. Poziemski, P. Siedlecki "Evaluating machine learning models for predicting pesticide toxicity to honey bees" Ecotoxicology and Environmental Safety 2026
  7. M. Fitzner et al. "BayBE: a Bayesian Back End for experimental planning in the low-to-no-data regime" RSC Digital Discovery
  8. J. Xiong et al. "Bridging 3D Molecular Structures and Artificial Intelligence by a Conformation Description Language"
  9. S. Mavlonazarova et al. "Untargeted Metabolomics Reveals Organ-Specific and Extraction-Dependent Metabolite Profiles in Endemic Tajik Species Ferula violacea Korovin" bioRxiv preprint

If you use scikit-fingerprints in your work, please cite our publication in SoftwareX (open access):

@article{scikit_fingerprints,
   title = {Scikit-fingerprints: Easy and efficient computation of molecular fingerprints in Python},
   author = {Jakub Adamczyk and Piotr Ludynia},
   journal = {SoftwareX},
   volume = {28},
   pages = {101944},
   year = {2024},
   issn = {2352-7110},
   doi = {https://doi.org/10.1016/j.softx.2024.101944},
   url = {https://www.sciencedirect.com/science/article/pii/S2352711024003145},
}

Also available as a preprint on ArXiv.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details.

Note that LLM-generated contributions are strictly forbidden. We do not accept PRs by AI agents or primarily created with code generation tools. They will result in a ban and spam report to GitHub. Usage of LLMs is only allowed to polish human contributions.

License

MIT -- see LICENSE.md for details.

Metadata

Release files for scikit-fingerprints 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scikit-fingerprints 2.1.0
File Size Uploaded
scikit_fingerprints-2.1.0.tar.gz 326.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scikit-fingerprints 2.1.0
File Interpreter ABI Platform
scikit_fingerprints-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 848.6 kB

Release files / scikit_fingerprints-2.1.0.tar.gz

Download URL scikit_fingerprints-2.1.0.tar.gz
Size 326.2 kB
Tags Source
SHA-256 checksum
How to use checksums
84b31a70ce86fa9859cb286748122cff5373c50b8659ef156e150342771770a9
BLAKE2b-256 checksum
How to use checksums
9b1668c88d482de822f4c56f61196c846e1699677c37a5db95ffdb2a2f1704b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Aug 27, 2026.

Transparency log

Release files / scikit_fingerprints-2.1.0-py3-none-any.whl

Download URL scikit_fingerprints-2.1.0-py3-none-any.whl
Size 522.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
731865c70e8845a4945f3720d657cf5f0c6770f5dca0cc9900163321947a2ebd
BLAKE2b-256 checksum
How to use checksums
099b21e912748b45c93ca5c29c9378d9d199c71950990f5fd68f07c56d180e88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Aug 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.13.0

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page