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.