Skip to content

Promote fatty, and give every molecule a readable name - #271

Merged
rvnminers-A-and-N merged 1 commit into
mainfrom
data/broad-heads-and-universal-naming
Jul 30, 2026
Merged

rvnminers-A-and-N merged 1 commit into
mainfrom
data/broad-heads-and-universal-naming

Conversation

@rvnminers-A-and-N

Copy link
Copy Markdown
Collaborator

Closes #217. Follows on from #257 (closed with its finding recorded).

Two data efforts, each of which ended somewhere other than where it started.

#257 β€” the broad heads split cleanly

Calibration had already lifted sweet/ethereal/pungent over the 50% floor, but only by making them very reluctant to fire (thresholds 0.75 / 0.64 / 0.66), sitting exactly on 0.50. Added food-authorised character molecules to all three, plus fatty as a control:

head n_pos AUROC precision
fatty 27 β†’ 41 0.854 β†’ 0.917 0.21 β†’ 0.51 promoted
sweet 208 β†’ 210 0.718 β†’ 0.727 0.50 β†’ 0.50 unmoved
ethereal 98 β†’ 106 0.924 β†’ 0.920 0.50 β†’ 0.50 unmoved
pungent 289 β†’ 295 0.792 β†’ 0.802 0.50 β†’ 0.50 unmoved

"Broad" was never the discriminator β€” chemical coherence is. fatty looks like an umbrella but is structurally crisp (mid-chain aldehydes, free fatty acids, lactones), so sixteen molecules more than doubled its precision. A sweet smell can be a lactone, a furanone, a vanillin, an ester β€” or carbon tetrachloride. No shared substructure means no fingerprint can find it, and curation can't touch it.

Hard boundary on the #247/#256/#262 method, pre-registered on #199 as a falsifiable GNN prediction. No industrial odorants were removed β€” the additive approach held.

#217 β€” the premise was wrong, and finding that out was the work

A full PubChem crawl on Title and IUPACName (the crawler had only ever asked for IUPACName, which is why inorganic salts and glycosides came back empty) resolved 41 of 784. I then theorised PubChem's SMILES matching was brittle and tested InChIKey lookup β€” it did worse, 1/12 against 2/12.

The remaining 743 aren't lookup failures. They're the long tail from the broad food/safety universe:

count
multi-component salts 159
very large structures 197
peptide-like 100
carbon-free 13

PubChem indexes salt components, not the mixture, and most of these aren't flavour-relevant. No crawl will name them.

So every molecule now falls back to its molecular formula, with mixtures labelled honestly rather than pretending to be one substance β€” CaI2O6 (mixture: Ca+2 + IO3- + IO3-). A raw SMILES in the grid looks broken; a formula tells a chemist something real.

master_enrichment: 8,861 molecules, 8,861 named β€” down from 770 blank.

Also: a reverted failure

The chamomile rescue backfired. Its additions were sesquiterpenes shared across many heads (bisabolol, farnesene, germacrene D) β€” chamomile got worse (0.691 β†’ 0.670) and the roster lost four confident heads. Same generic-molecule mistake blackberry taught us earlier. Reverted; 108 capable restored.

Verification

  • ruff clean; suite 43 passed
  • roster: 166 aroma heads, 108 confident-capable, 58 indicative
  • rebuilt: master_enrichment (8,861), profile_index (8,842 Γ— 177), flavor_map
  • needs sudo systemctl restart flavormancer β€” models and all three artifacts changed

)

Two data efforts, each of which ended somewhere other than where it started.

#257 β€” THE FOOD SIDE OF THE BROAD HEADS. Calibration had already lifted sweet, ethereal and
pungent over the 50% precision floor, but only by making them very reluctant to fire (thresholds
0.75 / 0.64 / 0.66) and they sat exactly on 0.50. Food-authorised character molecules were added
to all three, plus fatty as a control. The results split cleanly:

  fatty     n_pos 27 -> 41   AUROC 0.854 -> 0.917   precision 0.21 -> 0.51   PROMOTED
  sweet     n_pos 208 -> 210 AUROC 0.718 -> 0.727   precision 0.50 -> 0.50   unmoved
  ethereal  n_pos 98 -> 106  AUROC 0.924 -> 0.920   precision 0.50 -> 0.50   unmoved
  pungent   n_pos 289 -> 295 AUROC 0.792 -> 0.802   precision 0.50 -> 0.50   unmoved

"Broad" was never the discriminator β€” chemical COHERENCE is. fatty looks like an umbrella but is
structurally crisp (mid-chain aldehydes, free fatty acids, lactones), so sixteen molecules more
than doubled its precision. A sweet SMELL can be a lactone, a furanone, a vanillin, an ester or
carbon tetrachloride; there is no shared substructure for a Morgan fingerprint to key on, so
curation cannot touch it. That is a hard boundary on the method from #247/#256/#262, and it is
pre-registered on #199 as a falsifiable prediction for the GNN.

No industrial odorants were removed to achieve this β€” the additive approach from #257 held.

#217 β€” NAMES. The premise was wrong, and finding that out was the work. A full PubChem crawl on
Title AND IUPACName (the crawler previously asked for IUPACName only, which is why inorganic salts
and glycosides kept coming back empty) resolved 41 of 784. An InChIKey lookup did WORSE than
SMILES, 1/12 against 2/12, so the brittle-matching theory was wrong too.

The remaining 743 are not lookup failures. They are the long tail that arrived with the broad
food/safety universe: 159 multi-component salts, 197 very large structures, 100 peptide-like, 13
carbon-free. PubChem indexes salt components rather than the mixture, and most of these are not
flavour-relevant at all. No crawl will ever name them.

So instead of chasing names that do not exist, every molecule now falls back to its molecular
formula, with multi-component structures labelled as mixtures rather than pretending to be a
single substance (CaI2O6 (mixture: Ca+2 + IO3- + IO3-)). A raw SMILES in the grid looks broken; a
formula is honest and tells a chemist something real.

  master_enrichment: 8,861 molecules, 8,861 named β€” down from 770 blank.

Also reverted a failed chamomile rescue. Its additions were sesquiterpenes shared across many
heads (bisabolol, farnesene, germacrene D), which made chamomile itself worse (0.691 -> 0.670) and
cost the roster four confident heads. Same generic-molecule mistake blackberry taught us; the
revert restored 108 capable.

Roster: 166 aroma heads, 108 confident-capable, 58 indicative.
Signed-off-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
@rvnminers-A-and-N rvnminers-A-and-N added area:aroma OpenPOM aroma model + sidecar area:data Datasets, sources, column mapping area:training Python dataset build + model training labels Jul 30, 2026
@rvnminers-A-and-N
rvnminers-A-and-N merged commit 48e6929 into main Jul 30, 2026
4 checks passed
@rvnminers-A-and-N
rvnminers-A-and-N deleted the data/broad-heads-and-universal-naming branch July 30, 2026 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:aroma OpenPOM aroma model + sidecar area:data Datasets, sources, column mapping area:training Python dataset build + model training

Projects

None yet

Development

Successfully merging this pull request may close these issues.

data: derive common / food-science names for all structures (not just IUPAC)

1 participant