orthonym.data.bicyclo_systems#

Note

Internal API. Names and behaviour may change between releases.

Retained names and data for bicyclic ring systems.

Provides lookup tables for bicyclic compounds that have retained (trivial) names preferred over systematic bicyclo[x.y.z] nomenclature.

IUPAC Reference: Blue Book 2013, (Bridged bicyclic hydrocarbons)

The bicyclo descriptor format is bicyclo[x.y.z] where: - x, y, z are the number of atoms in each bridge (excluding bridgeheads) - Values are sorted descending: x >= y >= z - Total carbons = x + y + z + 2 (the +2 accounts for bridgehead carbons)

orthonym.data.bicyclo_systems.get_retained_bicyclo_name(canonical_smiles)#

Get the retained name for a bicyclic compound if one exists.

Parameters:

canonical_smiles (str) – RDKit canonical SMILES string

Returns:

Retained name if exists, None otherwise

Return type:

str | None

Examples

>>> get_retained_bicyclo_name("C1C2CC3CC1CC(C2)C3")
'adamantane'
>>> get_retained_bicyclo_name("C1CC2CCC1C2") # bicyclo[2.2.1]heptane,
None
>>> get_retained_bicyclo_name("C1CC2CCC1CN2") # isoquinuclidine, PA1 R6
None
>>> get_retained_bicyclo_name("C1CC2CCC1CC2") # bicyclo[2.2.2]octane
None
orthonym.data.bicyclo_systems.get_bicyclo_by_descriptor(descriptor)#

Get the standard descriptor format for a bicyclo system.

Validates that the descriptor is in the correct format.

Parameters:

descriptor (str) – Bicyclo descriptor string (e.g., “bicyclo[2.2.1]”)

Returns:

Normalized descriptor if valid, None otherwise

Return type:

str | None

Examples

>>> get_bicyclo_by_descriptor("bicyclo[2.2.1]")
'bicyclo[2.2.1]'
>>> get_bicyclo_by_descriptor("invalid")
None
orthonym.data.bicyclo_systems.is_retained_bicyclo(canonical_smiles)#

Check if a bicyclic compound has a retained name.

Parameters:

canonical_smiles (str) – RDKit canonical SMILES string

Returns:

True if compound has a retained name

Return type:

bool

Examples

>>> is_retained_bicyclo("C1C2CC3CC1CC(C2)C3") # adamantane
True
>>> is_retained_bicyclo("C1CC2CCC1C2") # bicyclo[2.2.1]heptane,
False
>>> is_retained_bicyclo("C1CC2CCC1CC2") # bicyclo[2.2.2]octane
False