Fork Me On GitHub
Fork Me On GitHub


Molpher-lib is based on the program Molpher which implements systematic chemical space exploration using a method called molecular morphing. Its purpose is not only to make molecular morphing easily accessible to a wider audience, but it also strives for becoming a powerful, transparent and easy-to-use de novo drug design tool.

On this simple web page, we will try to explain what molecular morphing is, how it can be used in de novo drug design and we will hint at some advanages Molpher-lib has over the original Molpher. There is also a page dedicated to some quick usage examples as well as an extensive documentation.

Molecular Morphing

Molecular morphing is an atom-based de novo drug design method that uses stochastic optimization to search for a 'path' in chemical space. The so called path is a set of molecular structures that result from application of small structural modifications of the molecular structure of an input molecule. An example of such a path can be seen in the figure below.

Example of a path generated by Molpher using some basic structural modifications. The modifications are shown as codes below the arrows (RA = remove atom, RB = remove bond, BR = bond reroute, MA = mutate atom).

The original Molpher software was programmed to find a set of modifications needed to transform one molecular structure into another. Therefore, it can generate a set of 'hybrid' structures that combine the structural features of two input molecules; very much like morphing in computer graphics.

One possible application of such algorithm 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. Such library could, for example, be used in a virutal screening campaign that might yield new ligands with new chemotypes.

Schematic depiction of a focused chemical space exploration experiment using molecular morphing. Multiple paths are generated between every pair of known active molecules (lines connecting the big diamonds, one example path is highlighted in red). Every path consists of intermediate (hybrid) structures (morphs, shown as small diamonds) that combine structural features of the pair that they connect. It is also possible (and generally a good idea) to impose constraints on the search space that will prevent the algorithm from generating structures with undesirable properties (represented by the thick black lines enclosing the explored area).

Advantages of Molpher-lib over Molpher

The motivation to develop Molpher-lib was mainly driven by various shortcomings of Molpher:

  1. It was developed as a standalone user-oriented software with no easy programmatic access to its features in mind.
  2. It only includes one exploration algorithm implementation with only very limited possibilities for customization.
  3. It only supports C++ programming language which makes experimenting with new exploration strategies difficult and interfacing with software in other languages very cumbersome.
  4. The software architecture is not modular enough which makes extending the C++ codebase a lengthy and difficult task.

These problems were eliminated in Molpher-lib as follows:

  1. The focus of Molpher-lib is to bring a powerful extensible framework to developers, rather than to non-technical users. Therefore, the GUI was stripped from the program and what was once a backend server was turned into a C++ library with powerful API.
  2. The API of the library does not only offer options to adjust search settings, but also allows most of the essential parts of the algorithm to be overridden by the caller (see tree operations). This makes Molpher-lib a highly customizable framework and various exploration algorithms can be easily implemented.
  3. The whole C++ interface is exposed to Python and the library comes with a convenient Python package that also offers additional functionality and algorithm implementations. This makes the library much more compatible with a lot of popular scientific packages and makes interfacing with them very easy.
  4. Molpher-lib uses highly modular software architecture that divides its functionality in small independent chunks. This makes modification, replacement and integration of new functionality much easier than before.

Thanks to all of the above the library has prerequisites to become a comprehensive and flexible de novo drug design framework. In the future, Molpher-lib will not only offer molecular morphing functionality, but will also include features that will allow for arbitrary evolution of molecular structures. This will be particularly useful in lead optimization and to quickly test new ideas in computer-aided drug design.


At the moment the highest non-development version of the library is v0.0.0b1. The documentation for each version is available through the links below: