Chemical Descriptors Library: Introduction

The Chemical Descriptors Library (CDL) is a C++ library that provides functionality in the area of chemical informatics.

Among the functionalities provided by the library are:

The CDL offers specialized functionality to use in chemical database implementations. Functionalities in this area include:

CDL programming interface

CDL provides a generic C++ framework to write algorithms for the calculation of molecular descriptors. CDL decouples descriptor's algorithms from the molecular graph with the use of iterators. As the C++ standard library, CDL uses iterators as the glue between algorithms and data-structures. However, there's more functionality required for a proper navigation of a graph. CDL provides necessary functions to access molecular vertices and edges in a generic way. Furthermore, CDL provides a generic interface to access atomic and bond properties, abstracting the access from the algorithms to the molecular properties.


The motivation for the Chemical Descriptors Library is twofold:

First is to provide a generic framework to use when writing algorithms for the calculation of molecular descriptors. Although this might seem compelling, it has been achieved for more general purposes in the C++ STL, which successfully decoupled containers and algorithms with the use of iterators. CDL follows the same paradigm of the STL (now part of the c++ standard,) providing iterators for the mapping of atoms, adjacent_atoms, bonds, incident_bonds, and basically all iterators and functions which are needed to navigate through a molecular graph. CDL's molecule class is parameterized on two basic components: atom and bond properties. The interface between properties (and their respective types) and algorithms is tackled with the use of property accessors. So if you have other atom and bond properties (with other types,) you can still use CDL's algorithms just providing the right property accessors.

Is well known in software design, that the construction of software components on top of libraries rich of functionality yields components rich in functionality. CDL has as main component the Boost Graph Library (BGL,) which provides an interface for how the structure of a graph can be accessed using a generic interface that hides the details of the graph data structure implementation. Using this interface, CDL is able to achieve graph stucture - algorithm interoperability. CDL provides all BGL's interfaces to traverse the underlying graph of a molecule, plus functions that deals particularly with the molecular representation. A standard generic way to traverse molecular graphs, and access its properties, is of paramaunt importance to encourage reuse of chemical descriptors algorithms.

The second and less important objective of the CDL, is to provide a platform and compiler-independent library for the calculation of molecular descriptors; this includes: conversion between different molecular representation formats (read smiles, MDL's mol, etc), fingerprinting, pharmacophoring, substructure searching, calculation of maximal common molecular subgraph, and the calculation of many more molecular descriptors.

Copyright © Vladimir Sykora 2003-2006 pt type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "' type='text/javascript'%3E%3C/script%3E"));