orthonym.rules.multiplicative#
Note
Internal API. Names and behaviour may change between releases.
Multiplicative nomenclature for symmetric bridge-linked molecules (IUPAC.
Detects molecules with two or more identical parent structures connected by a polyvalent linking group (bridge) and produces multiplicative names like “4,4’-methylenedianiline” or “4,4’-oxydibenzoic acid”.
- Three conditions for multiplicative naming (IUPAC:
Two or more identical parent structures (verified by canonical SMILES)
Connected by a polyvalent linking group (the bridge atom(s))
Parent has a principal characteristic group (suffix-forming FG)
Uses the recursion depth guard from fragment_naming.py to prevent infinite loops when naming fragment halves.
- orthonym.rules.multiplicative.name_free_homonuclear_group14_hydride(mol)#
Free-molecule homonuclear Group-14 catenated parent hydride / : n identical Si/Ge/Sn/Pb atoms in an unbranched, fully-H-saturated, standard-valence chain -> di/tri/…+stem, with the ene/yne modification for a 2-atom unsaturated chain:
[SiH3][SiH3] -> disilane [SiH3][SiH2][SiH3] -> trisilane [GeH3][GeH3] -> digermane [GeH2]=[GeH2] -> digermene, BB 38147) [SiH2]=[SiH2] -> disilene
v52 P02T2, the Blue Book verbatim “1-methyltridecastannane (PIN)”): simple unbranched-alkyl substituents on the backbone are also admitted, e.g. [CH3][SnH2]x12[SnH3] -> 1-methyltridecastannane. The parent is still the longest homogeneous Group-14 chain (backbone shape/branch/unsaturation checks run over Group-14-Group-14 bonds only, ignoring alkyl branches); each carbon substituent must itself be a clean unbranched saturated chain (get_alkyl_name) attached by a single bond at one backbone atom.
Fail-closed (returns None) for any non-carbon heteroatom / halide, a branched or hetero substituent, a backbone branch, a ring anywhere in the molecule, a charge / radical, a non-standard valence, a single hub (bare mononuclear hydride, handled elsewhere), or unsaturation combined with a substituent or on a chain longer than 2 atoms (locant machinery not built here — never a wrong name). Pure: no mol mutation.
- orthonym.rules.multiplicative.name_multiplicative(mol)#
Detect and name multiplicative nomenclature cases.
- Parameters:
mol – RDKit Mol object.
- Returns:
Multiplicative IUPAC name if applicable, None otherwise.
- Return type:
str | None