orthonym.rules.tricyclo#
Note
Internal API. Names and behaviour may change between releases.
Tricyclo compound naming according to IUPAC 2013 nomenclature.
Implements tricyclo[x.y.z.a^b,c] descriptor generation for bridged tricyclic hydrocarbons.
IUPAC Reference: Blue Book 2013, (Tricyclic bridged ring systems)
The tricyclo descriptor format is: - tricyclo[a.b.c.d^e,f]alkane
where: - a, b are the two branches of the main ring (atoms between main bridgeheads) - c is the main bridge (first additional bridge) - d^e,f describes the secondary bridge: d atoms, connecting positions e and f
Examples: - Adamantane: tricyclo[3.3.1.1^3,7]decane
Main ring: 6 atoms, split 3.3
Main bridge: 1 atom
Secondary bridge: 1 atom connecting positions 3 and 7
Numbering rules: 1. Start at one main bridgehead (position 1) 2. Number along the longer branch of main ring 3. Continue to second bridgehead 4. Number back along shorter branch 5. Number main bridge 6. Number secondary bridges (from higher-numbered bridgehead)
- orthonym.rules.tricyclo.is_tricyclo_system(mol)#
Check if molecule is a tricyclo (3-ring bridged) system.
- Parameters:
mol – RDKit Mol object
- Returns:
True if molecule has exactly 3 rings
- Return type:
bool
- orthonym.rules.tricyclo.generate_tricyclo_descriptor(mol)#
Generate the tricyclo[a.b.c.d^e,f] descriptor for a molecule.
- Parameters:
mol – RDKit Mol object
- Returns:
Descriptor string like “tricyclo[3.3.1.1^3,7]”, or None
- Return type:
str | None
Examples
>>> mol = Chem.MolFromSmiles('C1C2CC3CC1CC(C2)C3') # adamantane >>> generate_tricyclo_descriptor(mol) 'tricyclo[3.3.1.1^3,7]'
- orthonym.rules.tricyclo.get_tricyclo_numbering(mol)#
Generate IUPAC numbering for a tricyclo system.
Numbering rules: 1. Start at one main bridgehead (position 1) 2. Number along longer branch of main ring to other bridgehead 3. Number back along shorter branch toward position 1 4. Number main bridge atoms 5. Number secondary bridge atoms
- Parameters:
mol – RDKit Mol object
- Returns:
Dict mapping atom_idx -> IUPAC locant (1-indexed), or None
- Return type:
Dict[int, int] | None
- orthonym.rules.tricyclo.name_tricyclo_system(mol)#
Generate the full IUPAC name for a tricyclo system.
- Parameters:
mol – RDKit Mol object
- Returns:
Full IUPAC name like “tricyclo[3.3.1.1^3,7]decane”, or None
- Return type:
str | None
Examples
>>> mol = Chem.MolFromSmiles('C1C2CC3CC1CC(C2)C3') # adamantane >>> name_tricyclo_system(mol) 'tricyclo[3.3.1.1^3,7]decane'
- orthonym.rules.tricyclo.get_retained_tricyclo_name(canonical_smiles)#
Look up retained name for a tricyclo compound.
- Parameters:
canonical_smiles (str) – Canonical SMILES string
- Returns:
Retained name if found, None otherwise
- Return type:
str | None
- orthonym.rules.tricyclo.is_retained_tricyclo(canonical_smiles)#
Check if a SMILES has a retained tricyclo name.
- orthonym.rules.tricyclo.generate_polycyclo_descriptor(mol)#
Generate descriptor for any bridged polycyclic system.
Handles bicyclo, tricyclo, tetracyclo, etc.
- Parameters:
mol – RDKit Mol object
- Returns:
Descriptor string or None
- Return type:
str | None
- orthonym.rules.tricyclo.name_polycyclo_system(mol)#
Generate IUPAC name for any bridged polycyclic system.
Routes to appropriate naming function based on ring count.
- Parameters:
mol – RDKit Mol object
- Returns:
IUPAC name or None
- Return type:
str | None
- orthonym.rules.tricyclo.name_polycyclo_with_functional_groups(mol)#
Name a polycyclic system that also has functional groups.
This handles cases like the diterpenoid where we have: - Hexacyclo ring system - Multiple ester groups - Lactone ring
- Parameters:
mol – RDKit Mol object
- Returns:
IUPAC name combining polycyclic parent with functional group suffixes
- Return type:
str | None