Integration of rdkit functionality into sklearn pipelines.
Project description
MolPipeline
MolPipeline is a Python package providing RDKit functionality in a Scikit-learn like fashion.
Background
The open-source package scikit-learn provides a large variety of machine
learning algorithms and data processing tools, among which is the Pipeline
class, allowing users to
prepend custom data processing steps to the machine learning model.
MolPipeline
extends this concept to the field of chemoinformatics by
wrapping default functionalities of RDKit, such as reading and writing SMILES strings
or calculating molecular descriptors from a molecule-object.
A notable difference to the Pipeline
class of scikit-learn is that the Pipline from MolPipeline
allows for
instances to fail during processing without interrupting the whole pipeline.
Such behaviour is useful when processing large datasets, where some SMILES strings might not encode valid molecules
or some descriptors might not be calculable for certain molecules.
Publications
The publication is freely available here.
Installation
pip install molpipeline
Usage
See the notebooks folder for basic and advanced examples of how to use Molpipeline.
A basic example of how to use MolPipeline to create a fingerprint-based model is shown below (see also the notebook):
from molpipeline import Pipeline
from molpipeline.any2mol import AutoToMol
from molpipeline.mol2any import MolToMorganFP
from molpipeline.mol2mol import (
ElementFilter,
SaltRemover,
)
from sklearn.ensemble import RandomForestRegressor
# set up pipeline
pipeline = Pipeline([
("auto2mol", AutoToMol()), # reading molecules
("element_filter", ElementFilter()), # standardization
("salt_remover", SaltRemover()), # standardization
("morgan2_2048", MolToMorganFP(n_bits=2048, radius=2)), # fingerprints and featurization
("RandomForestRegressor", RandomForestRegressor()) # machine learning model
],
n_jobs=4)
# fit the pipeline
pipeline.fit(X=["CCCCCC", "c1ccccc1"], y=[0.2, 0.4])
# make predictions from SMILES strings
pipeline.predict(["CCC"])
# output: array([0.29])
Molpipeline also provides custom estimators for standard cheminformatics tasks that can be integrated into pipelines, like clustering for scaffold splits (see also the notebook):
from molpipeline.estimators import MurckoScaffoldClustering
scaffold_smiles = [
"Nc1ccccc1",
"Cc1cc(Oc2nccc(CCC)c2)ccc1",
"c1ccccc1",
]
linear_smiles = ["CC", "CCC", "CCCN"]
# run the scaffold clustering
scaffold_clustering = MurckoScaffoldClustering(
make_generic=False, linear_molecules_strategy="own_cluster", n_jobs=16
)
scaffold_clustering.fit_predict(scaffold_smiles + linear_smiles)
# output: array([1., 0., 1., 2., 2., 2.])
License
This software is licensed under the MIT license. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file molpipeline-0.8.2.tar.gz
.
File metadata
- Download URL: molpipeline-0.8.2.tar.gz
- Upload date:
- Size: 91.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60d6fe6f7e6b7eb90bd136799e89333f5a421176a30caebd0986b78bae4b11fc |
|
MD5 | e916acb0448fe351dc4f8b7401bcbfba |
|
BLAKE2b-256 | 2e1f2296b9eadd5695b3a09dce1c85d1b6f84ecf67227c93dffdf9093e49d417 |
File details
Details for the file molpipeline-0.8.2-py3-none-any.whl
.
File metadata
- Download URL: molpipeline-0.8.2-py3-none-any.whl
- Upload date:
- Size: 131.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93933cb2cfd421555dbb61165d7b161e348cefbd5e4ef600cbca2ae598665a7f |
|
MD5 | f58e58b1de1037daa76fec5cbfa25647 |
|
BLAKE2b-256 | f1f271d7cb6a8a87d8b3d5b8129aabf7f0ee848fc20e96baca43541be35ee035 |