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:
  1. Two or more identical parent structures (verified by canonical SMILES)

  2. Connected by a polyvalent linking group (the bridge atom(s))

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