orthonym.rules.sulfur_oxoacid#

Note

Internal API. Names and behaviour may change between releases.

: sulfur-oxoacid acyl-oxy / -amino substituent prefixes.

When a sulfur oxoacid group is attached BY OXYGEN (chalcogen) OR NITROGEN to a compound that also carries a characteristic group senior to the sulfur acid for citation as principal group (e.g. a carboxylic acid), the sulfur group is cited as a substituent PREFIX, not as the parent , the Blue Book Blue Book):

3-(sulfooxy)propanoic acid (PIN):36488 3-[(methoxysulfinyl)oxy]propanoic acid (PIN):36490 3-[(chlorosulfonyl)oxy]propanoic acid (PIN):36492 3-(sulfamoyloxy)propanoic acid (PIN):36494 3-[(aminosulfinyl)oxy]propanoic acid (PIN):36500 (NOT sulfinamoyloxy) 3-[(methoxysulfonyl)amino]propanoic acid (PIN):36502

The generic path names this tail by skeletal (“a”) replacement (…-1,3-dioxa-2λ6-thiapropyl) — a valid, round-tripping, but NON-PIN form.

The S-oxoacid acyl group is {X}sulfonyl (n S=O double bonds = 2) or {X}sulfinyl (n = 1), where X is the single S ligand that is neither the linking O/N nor an oxo. Two Blue Book contractions apply / the substituent-prefix tables at:56857,:56859): hydroxysulfonyl -> sulfo and aminosulfonyl -> sulfamoyl. aminosulfinyl is NOT contracted (explicitly [not …sulfinamoyloxy…] at:36500).

Every function fails closed (returns None) on any S outside the neutral mono/di-oxo acyl class (charged/radical S, ring S, an unexpected ligand set, a carbon-R sulfonyl, a plain thioether); the top-level /OPSIN round-trip gate keeps 0-wrong on whatever is emitted.

orthonym.rules.sulfur_oxoacid.name_sulfur_oxoacid_oxy_substituent(mol, o_idx, from_idx)#

O-linked -O-S(oxoacid) as an oxy substituent prefix.

o_idx is the ester/bridging oxygen (the fragment attach atom); from_idx is its parent-side neighbour. Returns sulfooxy / sulfamoyloxy (single compound tokens, or (chlorosulfonyl)oxy / (aminosulfinyl)oxy / (methoxysulfinyl)oxy (an internal paren the caller’s enclosure escalates to brackets), or None (fail closed).

orthonym.rules.sulfur_oxoacid.name_sulfate_ester(mol, sulfur_idx)#

Functional-class name for a neutral ester of sulfuric acid.

Sulfuric acid H2SO4 is a dibasic mononuclear noncarbon oxoacid; its esters are named like esters of organic acids, the Blue Book Blue Book): the organyl group(s) are cited as separate words, in alphanumerical order when more than one, followed by the anion name of the acid (‘sulfate’); a partial (mono) ester of the dibasic acid inserts the word ‘hydrogen’ (or ‘dihydrogen’) for a remaining acidic -OH. The governing PIN example is CH3-O-SO2-OH methyl hydrogen sulfate (PIN) (:35968).

(RO)2SO2 -> ‘dialkyl sulfate’ (di-ester, 0 free -OH) RO-SO2-OH -> ‘alkyl hydrogen sulfate’ (mono-ester, 1 free -OH)

This is the SULFUR analogue of:func:rules.phosphorus.name_phosphate_ester and reuses its owner/multiplier/hydrogen-word helpers. It is distinct from a sulfonate ester (R-SO2-O-R’, an S-C bond, already handled by ‘sulfonic_ester’ -> rules.esters.name_noncarbon_ester): a sulfate ester has NO S-C bond.

Requires a neutral, acyclic S(VI) with EXACTLY two terminal =O, at least one -O-C ester owner, and NO S-C bond. Fails closed (None) off that shape, or if any organyl owner is unspellable, or the name would not cover every atom; the top-level /OPSIN validity gate is the 0-wrong backstop on whatever is emitted.

orthonym.rules.sulfur_oxoacid.name_sulfur_oxoacid_acyl_for_amino(mol, s_idx, frag_atoms)#

N-linked -NH-S(oxoacid): the acyl prefix for the amino wrapper.

Reached when the S-oxoacid attaches through an amine N (the amino-branch caller has already split off the N as the linker and recursed into the S fragment, so s_idx is the fragment attach atom whose single EXTERNAL neighbour, outside frag_atoms, is that N). Returns e.g. methoxysulfonyl for the caller to wrap as (methoxysulfonyl)amino, or None (fail closed) if the external linker is not a neutral N or the S is out of class.