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.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