code wiki / (root) / nx_taste_psychophysics.nx

nx_taste_psychophysics.nx

buildroot/runtime/nx_taste_psychophysics.nx

3258 B65 linesdepth 2pulls 2 transitivereach 3 importersview sourcekind librarytopic taste
docsdependenciesstructsconstsfunctions

about

nx_taste_psychophysics.nx -- T1 of the TASTE-SCIENCE ladder: the PERCEPTION rung. Where T0 maps one stimulus -> one receptor response, T1 models how MULTIPLE tastes interact in a real mixture -- the central psychophysics the static-score baseline (nx_food_science: just SUM the axes) fundamentally cannot represent. Two real, famous phenomena: 1. MIXTURE SUPPRESSION (divisive normalization): in a mixture, each taste is suppressed by the others -- sugar mutes sourness and bitterness (why lemonade needs so much sugar). The perceived whole is SUB-ADDITIVE: less than the sum of the parts. 2. UMAMI SYNERGY (Yamaguchi 1967): monosodium glutamate + a 5'- ribonucleotide (IMP/GMP) produce umami FAR GREATER than the sum -- a multiplicative super-additive term. The reason dashi (kombu + bonito) tastes the way it does. MEASURED EXCEED (gate-checked): mixture total < linear sum (suppression) and glutamate+nucleotide > linear sum (synergy). A model that just adds axis scores gets BOTH wrong, in opposite directions. All intensities in milli (0..1000). Integer-exact, deterministic. genealogy_id: yamaguchi_1967_umami_synergy + bartoshuk_mixture_suppression + heeger_1992_divisive_normalization

dependencies 1 imports · 3 importers

nx_syscalls.nx nx_taste_psychophysics.nx nx_flavor_design.nx nx_flavor_design_test.nx nx_taste_psychophysics_test.nx

imports: nx_syscalls.nx

imported by: nx_flavor_design.nxnx_flavor_design_test.nxnx_taste_psychophysics_test.nx

structs

none

consts

28const NX_TP_SUPP_SCALE: i64 = 2000 // divisive-suppression scale (uM-equiv)
29const NX_TP_SYNERGY_COEFF: i64 = 8000 // umami synergy strength (Yamaguchi)

functions

33func nx_taste_suppress_one(intensity_i: i64, sum_others: i64) -> i64
41func nx_taste_umami_synergy(glutamate_milli: i64, nucleotide_milli: i64) -> i64
called by 1: main
48func nx_taste_mixture_perceive(sweet: i64, sour: i64, salty: i64,
60func nx_taste_mixture_total(sweet: i64, sour: i64, salty: i64,