Open-source from/in the enterprise: the RDKit

  • View

  • Download

Embed Size (px)


A presentation with an overview of the RDKit, some of its integrations, and a few case studies about how we're making use of it in NIBR

Text of Open-source from/in the enterprise: the RDKit

  • Open-source from/in the enterprise: the RDKit Gregory Landrum NIBR Informatics Novartis Institutes for BioMedical Research, Basel, Switzerland
  • Outline What is the RDKit? RDKit integration with other open-source projects Knime PostgreSQL IPython Pandas Lucene RDKit in NIBR, some case studies
  • RDKit: What is it? Open-source C++ toolkit for cheminformatics Wrappers for Python (2.x), Java, C# Functionality: 2D and 3D molecular operations Descriptor generation for machine learning PostgreSQL database cartridge for substructure and similarity searching Knime nodes IPython integration Lucene integration (experimental) Supports Mac/Windows/Linux Releases every 6 months business-friendly BSD license Code:
  • The community Mailing lists hosted at sourceforge: mailman/ Active participants from academia, small and large pharma, software companies, and service providers 30+ attendees at each of the two user group meetings
  • Some features Input/Output: SMILES/SMARTS, SDF, TDT, PDB, SLN [1], Corina mol2 [1] Cheminformatics: Substructure searching Canonical SMILES Chirality support (i.e. R/S or E/Z labeling) Chemical transformations (e.g. remove matching substructures) Chemical reactions 2D depiction, including constrained depiction 2D->3D conversion/conformational analysis via distance geometry UFF and MMFF94 implementation for cleaning up structures Fingerprinting: Daylight-like, atom pairs, topological torsions, Morgan algorithm, MACCS keys, etc. Similarity/diversity picking 2D pharmacophores [1] Gasteiger-Marsili charges Hierarchical subgraph/fragment analysis Bemis and Murcko scaffold determination RECAP and BRICS implementations Multi-molecule maximum common substructure Feature maps Shape-based similarity Fraggle similarity (from GSK) Molecule-molecule alignment Open3DAlign implementation Integration with PyMOL for 3D visualization Functional group filtering Salt stripping Molecular descriptor library: Topological (3, Balaban J, etc.), Compositional (Number of Rings, Number of Aromatic Heterocycles, etc.), EState, SlogP/SMR (Wildman and Crippen approach), MOE like VSA descriptors, Feature-map vectors Machine Learning: Clustering (hierarchical) Information theory (Shannon entropy, information gain, etc.) Tight integration with the IPython notebook and pandas Integration with the InChI library [1] These implementations are functional but are not necessarily the best, fastest, or most complete.
  • The contrib dir LEF (Anna Vulpetti, NIBR): Local Environment of Fluorine PBF (Nicholas Firth, ICR): Plane of best fit descriptor SA_Score (Peter Ertl, NIBR): synthetic-accessibility score fraggle (Jameed Hussain, GSK): fragment-based similarity mmpa (Jameed Hussain, GSK): molecular matched pairs pzc (Paul Czodrowski, Merck KGaA): tools for building and validating classifiers ConformerParser (Sereina Riniker, NIBR): parser for Amber trajectory files
  • C++ : Core data structures and algorithms Postgre SQL Java SWIG Python Boost.Python Knime What is this all about? script inter- active Exact same algorithms/implementations accessible from many different endpoints C# App
  • Knime integration Open-source RDKit-based nodes for Knime providing cheminformatics functionality + Trusted nodes distributed from knime community site Work in progress: more nodes being added (new wizard makes it easy)
  • Whats there? +
  • RDKit Interactive Table KNIME interactive table with molecules as column headers +
  • + Functionality for working with 3D molecules Example: flexible molecule-molecule alignment
  • PostgreSQL integration PostgreSQL ( a robust, flexible, and extensible relational open-source database. Rich collection of extensions available RDKit cartridge: Fast substructure and similarity search Fingerprints (count-based and bit-vector): Morgan (ECFP-like), FeatMorgan (FCFP-like), RDKit (Daylight like), atom pair, topological torsion, MACCS Standard molecule properties and descriptors Basis for myChEMBL ( virtual-machine-aka-mychembl.html) Ochoa, R., Davies, M., Papadatos, G., Atkinson, F., & Overington, J. P. (2014). myChEMBL: a virtual machine implementation of open data and cheminformatics tools. Bioinformatics, 30(2), 298300. +
  • PostgreSQL integration Substructure search + chembl_17=# select molregno,m from rdk.mols where m@>'c1ccc2c(c1)C(=NN(C2=O)Cc3nc4cc(ccc4s3)C)CC(=O)O';! molregno | m ! ----------+---------------------------------------------------------------! 7502 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12! 23364 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)cc(C(F)(F)F)c3s2)c(=O)c2ccccc12! 23439 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)cc(Cl)c3s2)c(=O)c2ccccc12! 23462 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)cc(F)c3s2)c(=O)c2ccccc12! 24192 | Cc1cc2nc(Cn3nc(CC(=O)O)c4ccccc4c3=O)sc2c(C)c1! 24190 | COc1cc2sc(Cn3nc(CC(=O)O)c4ccccc4c3=O)nc2cc1C(F)(F)F! 24194 | Cc1ccc2sc(Cn3nc(CC(=O)O)c4ccccc4c3=O)nc2c1! 24237 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)c(O)cc3s2)c(=O)c2ccccc12! 24331 | CC(c1nc2cc(C(F)(F)F)ccc2s1)n1nc(CC(=O)O)c2ccccc2c1=O! (9 rows)! ! Time: 112.325 ms!
  • PostgreSQL integration Similarity search + chembl_17=# select * from get_mfp2_neighbors('O=C(O)Cc1nn(Cc2nc3cc(C(F) (F)F)ccc3s2)c(=O)c2ccccc12') limit 5;! molregno | m | similarity ! ----------+------------------------------------------------------+-------------------! 7502 | O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12 | 1! 24184 | O=C(O)Cc1nn(Cc2nc3ccc(C(F)(F)F)cc3s2)c(=O)c2ccccc12 | 0.859649122807018! 24153 | O=C(O)Cc1nn(CCc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12 | 0.830508474576271! 24152 | O=C(O)Cc1nn(Cc2nc3ccccc3s2)c(=O)c2cc(C(F)(F)F)ccc12 | 0.813559322033898! 24150 | O=C(O)Cc1nn(Cc2nc3ccccc3s2)c(=O)c2ccc(C(F)(F)F)cc12 | 0.813559322033898! (5 rows)! ! Time: 1222.426 ms! ! ! Notice that results come back in sorted order
  • PostgreSQL integration Other functionality + chembl_17=# select mol_formula('O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12');! mol_formula ! ---------------! C19H12F3N3O3S! (1 row)! chembl_17=# select mol_logp('O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12');! mol_logp ! ----------! 3.7004! (1 row)! chembl_17=# select mol_inchi('O=C(O)Cc1nn(Cc2nc3cc(C(F)(F)F)ccc3s2)c(=O)c2ccccc12'); mol_inchi ! ------------------------------------------------------------------------------------------ -----------------------------------------------! InChI=1S/C19H12F3N3O3S/ c20-19(21,22)10-5-6-15-14(7-10)23-16(29-15)9-25-18(28)12-4-2-1-3-11(12)13(24-25)8-17(26)27 /h1-7H,8-9H2,(H,26,27)! (1 row)! ! ! !
  • PostgreSQL integration Other functionality + chembl_17=# select mol_to_ctab('CC'::mol);! mol_to_ctab ! -----------------------------------------------------------------------! +! RDKit 2D +! +! 2 1 0 0 0 0 0 0 0 0999 V2000 +! 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0+! 1.2990 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0+! 1 2 1 0 +! M END +! ! (1 row)! ! ! !
  • IPython notebok integration IPython: a very powerful interactive shell for python IPython notebook: IPython in the browser, with graphics combines code and output in one place great tool for reproducible research Example notebook with graphics. RDKit integration: Display molecules, substructure matches, reactions, graphics from PyMOL +
  • IPython notebook integration: Molecule tables +
  • IPython notebook integration: Similarity Maps + Riniker, S. & Landrum, G. A. J Cheminf (2013).
  • IPython notebook integration: PyMol +
  • Pandas integration Pandas: library for working with data tables in Python. Integrates well with matplotlib and ipython RDKit integration: Load smiles tables or SD files into Pandas data tables Adds molecule columns to existing tables with smiles/SD columns Enables substructure filters on tables Integration with IPython notebook to render molecules +
  • Pandas integration + Substructure filters Molecules in tables
  • Lucene integration Still in the experimental stage Adds substructure search functionality with fingerprint screenout to Lucene Includes demo app for testing +