8.3 Conformers

OEMols can 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, thought 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-------------------
                  |                        |
                  |                        |
                OEConfBaseTo----------->OEMCMolBaseT
<-- indicates inheritance
o-> indicates object o is contained int 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 this graph portion of a molecule, a conformer will reflect the graph properties of its parent multi-conformer molecule. It 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.