6.3 Conformers

OEMol s contain one or more conformers. These conformers are managed in a manner very similar to atoms and bonds. Conformers can only be created or destroyed in the context of an OEMol, and must be accessed via member functions laid out in the OEMCMolBaseT API .

Conformers are represented by the abstract base-class OEConfBaseT (again the T indicates this is a template class). It is sometimes convenient to be able to treat a conformer object as its own single-conformer molecule. For this reason, OEConfBaseT inherits from OEMolBase . Thus, though a conformer is contained within a multi-conformer molecule, it can act as a single-conformer molecule, and can be passed to functions which have an OEMolBase argument.

Simplistic OEChem inheritance scheme:
                OEBase
                 /|\
                  |
                  |
                OEMolBase<------------------
                 /|\                       |
                  |                        |
                  |                        |
                OEConfBaseT o---------->OEMCMolBaseT
<-- indicates inheritance
o-> indicates object o is contained in the object indicated by >

One must be cautious when utilizing this OEMolBase inheritance functionality. Each multi-conformer molecule has only a single heavy-atom graph. For functions which query the graph portion of a molecule, a conformer will reflect the graph properties of its parent multi-conformer molecule. Graph properties include the connection table of atoms and bonds, as well as any properties stored by the atoms and bonds. A conformer is only independent of its parent for non-graph (e.g. conformational) properties. The logical extension of this principle is that changes made to the graph properties of one conformer will effect its parent multi-conformer molecule and thus all the other conformers in that molecule as well.