This is OEChem TK’s Python Programming manual.

How to read this manual

This is a collection of prose covering many of the important topics which can be addressed by the OEChem TK library. This manual is meant to be read from front to back at least once. Each topic in this manual is introduced assuming the material presented earlier in the manual has been read. Further, the complexity of topics as well as the complexity of the example code grows as the text progresses. While the initial listings are effectively the “Hello World” of OEChem TK, later examples may require some time to comprehend fully. This manual is filled with example programs. We encourage you to compile, test, and modify the examples we present.

See also

Experienced OEChem TK programmers should use the Application Programming Interface (OEChem API) for the most thorough reference of OEChem TK functionality. N.B. The API section of the documentation is automatically generated from the C++ header files. Due to technical limitations, it is not possible to provide each API function with the correct Python syntax. If you have any questions about the correct syntax for a function please contact support (

OEChem and Informatics

Chemical information processing is the science of representing molecules in computers. Hence the fundamental “object” or data structure within a chemical information system is that of the molecule, its atoms, and its bonds.

A significant problem encountered in such systems is that different applications place differing requirements or constraints on how a molecule is represented. In protein biochemistry, molecules are divided into amino acid residues, with specific atom naming and conformational information such as alpha helix or beta sheet. Inorganic chemistry requires isotopic and coordination information for atoms and modeling of complex chiralities.

One possible solution is to prescribe a single data structure that encodes all of the potential information required of a molecule. However, such an approach suffers from the fact that “you cannot please all of the chemists, all of the time.” A requirement in the field of chemical databases and substructure searching is that a molecule representation be as compact as possible, to allow as much information to be held in memory as possible and maximize the performance of processing databases from disk.

For this reason, the molecule, its atoms, and its bonds are defined in as abstract a manner as possible in OEChem TK. The following is a quick guide to the chapters covering these fundamental classes:


OEAtomBase, OEBondBase

See also