Molpher-lib is a C++/Python library based on the program Molpher, which implements systematic chemical space exploration using a method called molecular morphing (original publication available here). However, the purpose of Molpher-lib is not just molecular morphing implementation, but it also strives to become an easy-to-use de novo drug design tool whose capabilities go beyond the original Molpher and offer wider spectrum of applications.
On this humble web page, we will shortly explain what molecular morphing is, how it can be used in de novo drug design and we will hint at some advantages Molpher-lib has over Molpher. If you want to skip this part and dive directly into the code examples, there is a page dedicated to it, which should help you quickly understand how the library works and what it can be applied for. Of course, there is also the documentation, which includes a more extensive tutorial.
Molecular morphing is an atom-based de novo drug design method that uses stochastic optimization to search for a 'path' in chemical space. This path is simply a set of molecular structures that result from iterative application of small structural modifications to an input molecular structure. An example of such a path can be seen in the following image:
Example of a chemical space path generated by Molpher from an input structure by iterative application of modifications (so called 'chemical operators'). The operators used in this example are shown as codes below the arrows in this figure (RA = remove atom, RB = remove bond, BR = bond reroute, MA = mutate atom).
The original Molpher software was written for the task of finding a set of modifications needed to transform one molecular structure to another. Therefore, it can generate a set of 'hybrid' structures that combine structural features of two input molecules; very much like morphing in computer graphics.
One possible application of an algorithm like this is sampling unknown chemical space 'around' molecules with confirmed biological activity (see figure below). Here, Molpher (or Molpher-lib) can be used to generate a focused virtual library of hybrid structures that are derived from known active molecules. Since these hybrid structures combine features of bioactive molecules and, thus, occupy similar area of chemical space, it is very likely that the hybrid molecules will likely have activity of their own. Therefore, virutal screening against this focused library of hybrids could be more successful tha against a random library.
Schematic depiction of a focused chemical space exploration experiment using molecular morphing. Multiple paths are generated between every pair of known active molecules. The lines in this picture correspond to a morphing operator while diamonds represent molecular structures. The big diamonds are then known active molecules between which we are trying to navigate. The small diamonds represent hybrid structures that are generated during morphing. A chemical space path example is highlighted in red. Because we are staying 'close' to the original input structures, generated hybrids are more likely to fall into the 'active' subset of chemical space (represented by the thick black lines enclosing the red area).
The motivation to develop Molpher-lib was mainly driven by various shortcomings of Molpher:
Molpher-lib attempts to address these issues as follows:
Furthermore, Molpher-lib includes new features that were not present in Molpher. A notable addition is the ability to lock certain atoms against certain types of modifications. This allows the user to explore chemical space around a particular scaffold or generate paths with molecules that have certain structural patterns conserved.
At the moment, the newest non-development version of the library is v0.0.0b2. Documentation for each main version of the library and some development snapshots can be found through the following links: