The origins 🌅
Remember these modeling toolboxes from chemistry classes where one could assemble molecules with colorful balls and sticks? These boxes sure used to be a favourite teaching accessory of my high school chemistry teacher and saved my grades in organic chemistry at university too.
After studying biochemistry and moving on to bioinformatics I was quite sure that I had left behind the world of atoms, bonds, and chemical reactions - well guess not…
This project started with a relatively simple task: to update a Python software, named Glycosylator, for creating 3D models of glycans. For the non-biologist reader: glycans are flexible polysaccharide chains (i.e. sugars) that sit on top of proteins or membranes and have important biological functions.
As my work progressed I started to realize that my codebase was capable of much more than just assembling glycans and placing them on proteins. I could build drug-like molecules, polymers, and with a bit of tweaking even nanotubes. Since all of these had little to do with glycans, I decided to split the codebase into a generalized codebase and a glycan-specific one. The generalized software, which was previously named Biobuild as a reference to Biopython, which serves as backend for the software architecture, is now BuildAMol!
Create your molecules interactively 🛠️
While many packages and applications exist to draw molecules in 2D, construct them from SMILES, or downright download them from a database of available atomic models, I was surprised to find that there was no software around that allowed the user to quickly, flexibly, and without too much fuzz assemble molecules of their own design similar to these chemistry modeling sets that had helped me so much in my student days. Now, that's the gap that BuildAMol tries to fill. It was designed as a software for the "I just need a ..." type of user who needs some kind of model for a molecule they are studying so they can do interesting things such as molecular dynamics or docking.
Just open a Jupyter Notebook, get any kind of molecular fragments to start with, assemble them, modify them, visualize them in any way you like. Found something you like a little but not fully? Try optimizing the conformation, the minimal-effort optimization requires just one line of code!
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
... or let some automatic pipeline handle it 🤖
Fun fact: BuildAMol was never intended for automated molecule design. Nevertheless, when I tried to find a protein ligand I realized that it was relatively easy for BuildAMol to be adapted for an automated modeling pipeline. To be honest, I was a little surprised myself. A single class with some 150 lines of code was all it took to get a working pipeline that could generate ligands from a library of fragments. Fast forward to Autodock Vina and an optimizer from Scipy and the entire ligand design pipeline was done!
In this example I designed a ligand for the Dopamine Receptor D2 (DRD2), which has a known ligand, the drug Risperidone. I generated a library of 200 molecule fragments, coded an assembler class, and used the Python package DockString which provides a convenient port to AutoDock Vina to compute docking scores. The entire code is available in the Tutorials of the BuildAMol documentation. Go check it out!
An expanding ecosystem 🔭
Good software lives from its community.
I hope that users will love BuildAMol as much as I do, and will develop their own software packages on top, handling the specific modeling tasks! That's also why BuildAMol offers the Extensions hub, so that users can more easily share their own classes, functions, and packages with the rest of the community. We ourselves have already added several extensions to build biomolecules, such as lipids, or materials such as nanotubes, or things like metal complexes.
Also, Glycosylator, which uses BuildAMol to model glycans and glycosylated proteins and membranes, is a stand-alone library that is already available. We also plan to develop a membrane modeling tool using BuildAMol in the future, so stay tuned!