OEGetRotatableBondCount

unsigned int OEGetRotatableBondCount(const OEChem::OEMolBase &mol, bool adjust = false)

Returns the number of rotatable bond counts in a molecule. Rotatable bond is defined as any single non-ring bond, bounded to nonterminal heavy (i.e., non-hydrogen) atom. In addition, It considers the carbon-carbon triple bond in acetylene rotatable. The function excludes single bonds observed in a certain groups, such as sulfonamides, esters, and amidine.

adjust

This parameter allows optional adjustment for aliphatic rings following the method of [Oprea-2000]. In this case, it also estimates the number of flexible bonds in aliphatics rings.

Note

The Oprea’s method is individual ring based. Since Smallest set of smallest rings perception is not available in OEChem TK (see section Smallest Set of Smallest Rings (SSSR) Considered Harmful for more details), we modified Oprea’s method to be ring system based (Ring Systems Identification), and implemented the function relatively closed to Oprea’s definition. The function works for various complex fused ring-systems and simple bridge ring-systems.

Examples

The number of rotatable bonds calculated for the molecule below is 0. When considering the flexibility of the aliphatic ring (setting the adjust parameter to true), the OEGetRotatableBondCount function returns 3, based on Oprea’s method that considers the amide bonds as non-rotatable.

../../_images/rtb-001.png

Example of aliphatic ring

The number of rotatable bonds calculated for the molecule below is 7. When considering the flexibility of the aliphatic ring (setting the adjust parameter to true), the OEGetRotatableBondCount function returns 11, adjusting the rotatable bond count by 2 from each of the two aliphatic rings.

../../_images/rtb-002.png

Example of rotatable bond count adjustment for aliphatic rings

See also