This is the 2D counterpart of the nanosensor-array fingerprinting simulator. The 3D scene rescales each sensor's bar instantly with concentration; this version instead solves each sensor's actual surface chemistry as a time-domain Langmuir adsorption/desorption rate equation — the same kinetics used to describe real chemiresistor gas sensors — through a full sniff/purge cycle.
dθ_i/dt = k_on,i·C·(1 − θ_i) − k_off,i·θ_i
θ_i — fractional surface coverage of sensor i (0..1), response ∝ θ_i
k_on,i — adsorption rate = k_off · (analyte affinity of sensor i)
k_off,i — desorption rate (per-sensor, fixed)
C — analyte concentration during "sniff" phase, 0 during "purge"
Exact solution each step (constant k_on,C,k_off over dt):
θ(t+dt) = θ_eq + (θ(t) − θ_eq)·e^(−k·dt), k = k_on·C + k_off, θ_eq = k_on·C / k
Classification (correlation / nearest-neighbor):
r(analyte) = Pearson correlation of the live θ-vector
against each analyte's reference affinity pattern
identified analyte = argmax_analyte r(analyte)
- Sniff / purge cycling — the array alternates between exposure (C > 0, coverage rises toward θ_eq) and clean-air purge (C = 0, coverage decays exponentially at each sensor's own k_off) — exactly how real electronic-nose instruments recover a stable baseline between readings.
- Concentration — raises θ_eq for every sensor; at low concentration θ_eq scales almost linearly with each sensor's affinity (the same approximation the 3D model uses everywhere), but at higher concentration the Langmuir saturation term bends the pattern — the radar shape stops being a pure rescale of the affinity table, which is physically correct and is a real limitation of amplitude-only "electronic nose" readout.
- Sensor noise — a per-frame multiplicative jitter on the readout, mimicking chemiresistor baseline drift and thermal noise; more noise flattens and blurs the fingerprint's shape.
- Active elements — removing array members drops dimensions from the fingerprint, degrading how separable the four analytes' patterns are.
The top panel plots θ_i(t) for every active sensor across the current window — a literal numerical integration, not a scripted animation — while the radar chart below compares the live pattern (cyan) against the best-matching analyte's reference shape (gold) and the other three (faint), the same correlation-based nearest-neighbor classifier used in real array-nose devices (cf. Suslick-style colorimetric noses, CNT/nanowire chemiresistor arrays).