class OE2DRingDictionary

This class represents OE2DRingDictionary that stores ring system layouts i.e. templates that can be plugged into the 2D coordinate generation system.

See also

The following OEChem TK examples illustrate how to create and utilize user-defined ring layouts:

The following OEDepict TK example shows how to generate a multi-page PDF report of user-defined ring layouts:



Default constructor that creates an empty ring template dictionary with default parameters.

OE2DRingDictionary(const OE2DRingDictionaryCreatorOptions& opts)

Constructs an empty ring dictionary with the given parameters.

OE2DRingDictionary(oemolistream &ims)
OE2DRingDictionary(const std::string &filename)

Initializes a ring dictionary from a binary file written by the OEWrite2DRingDictionary function.


unsigned int AddRings(const OEMolBase &mol)

Returns the number of ring systems extracted from the given molecule and adds them to the dictionary.


The molecule with 2D coordinates.

By default, the rings are extracted and added to the dictionary by the following rules:

  • A ring system will be added to the dictionary even if a corresponding layout already exists in the built-in ring dictionary i.e. user-defined layout will have higher priority.

  • If a ring system already exists in the given dictionary then the new ring template will be ignored i.e first-come first-register.

  • If a ring system has specified cis/trans bond stereo configuration then two layouts could be added to the ring dictionary: one with the cis/trans bond stereo configuration and one pure carbon skeleton framework without any bond stereo configuration.

The rules above can be altered when the ring dictionary is constructed via the OE2DRingDictionaryCreatorOptions class.


unsigned int NumRings() const

Returns the number of rings stored in the dictionary.