A New RDKit-Native API
cultural barriers in science; integrating RDKit with quantum chemistry; Rowan's new API; changes to billing
Every scientific discipline has its own language and software. Organic chemists think in terms of line drawings and ChemDraw, while computational chemists like Z-matrices, structural biologists live in PyMol, and data scientists love their Jupyter Notebooks. Some of us have written before about how different groups of scientists can develop entirely distinct terms, tools, and standards. Alongside the actual burden of knowledge, these differences in culture are what make interdisciplinary research so challenging.
This is true even within ostensibly unified fields, like computational chemistry. For a lot of people working in cheminformatics and drug design, RDKit is the software package of choice. But RDKit doesn’t naturally integrate easily with the quantum mechanics-based ecosystem of chemistry tools. For instance, if I create an RDKit molecule from a SMILES string or another graph-like representation, I don’t automatically get any associated 3D coordinates; I have to build 3D coordinates using some sequence of steps, and then choose which conformer to run subsequent calculations on (in an unrelated file format). These sorts of practical problems aren’t “unsolved” in any grand sense; they just make it difficult to do interdisciplinary scientific projects.
At Rowan, we’ve gotten pretty good at writing software that integrates different chemical tools into a single robust workflow. But many of the scientists we talk to find it difficult to integrate quantum chemical tools into workflows based around RDKit or similar programs. It’s nice to know that neural network potentials can generate high-quality conformer ensembles for arbitrary small molecules; but if it takes hundreds of lines of code and dozens of extra dependencies to add this step to a simple docking workflow, most scientists will just keep doing things the old way.
To help address this problem and make it simple to integrate cutting-edge simulation into chemical workflows, we’re releasing a first-class RDKit API that handles all of the data conversion, deployment, and parsing. When you call one of the functions, Rowan’s RDKit API automatically:
Converts the RDKit molecule to the appropriate datatype.
Allocates computer time in the cloud.
Executes and runs a complex, multi-step workflow using one or more underlying software packages.
Checks for job completion and retrieves the data.
Creates an RDKit-friendly object and returns it to the user.
We’ve created RDKit-native functions for computing pKa, tautomers, conformers, single-point energies, and geometry optimizations. Every function has a single-molecule version (run_pka
) and a batch version (batch_pka
) that automatically distributes jobs across multiple computers in parallel, making library-scale computation practical. You can read more in our API documentation:
While other researchers have written integrations between RDKit and quantum chemistry (1, 2, 3, &c), we think our interface stands apart. We automatically back up all calculations to your Rowan account, so it’s easy to find and view specific calculations in 3D without needing to re-run them. Plus, we’ve invested a lot of time and effort into building a robust and performant backend that works and scales to meet demand, so you don’t have to worry about setting up your own local compute cluster or cloud resources.
We’ve also adjusted our credit system to make this much more practical for our users. Previously, we used integer numbers of credits for each job—this was simpler back when we mainly ran DFT calculations that took hours, but makes much less sense for lightning-fast NNP optimizations that complete in a second or two. Rowan now supports fractional credit billing, so you can run hundreds of low-cost jobs from RDKit without using up all your credits. For instance, this calculation took 4 seconds to run and cost only 0.17 credits:
If you’re interested in scripting workflows or cheminformatics, you can install the Python API using pip (pip install rowan-python
) and start building today. For feedback, bug reports, or ideas for improvements, please contact us!