Before you buy a sensor, record a sample, or train a classifier, you want one answer: can this substance be smelled at all by an electronic nose? That question has a surprisingly rigorous software answer, because it reduces to two physical facts — how much of the molecule gets into the air, and whether it reacts with the sensor surface. Both can be estimated from nothing more than the molecule's structure, written as a SMILES string.

This essay walks through the pipeline that turns a string like CC(=O)OCC(C)C (isoamyl acetate, the smell of banana oil) into a green/yellow/red feasibility verdict. And it is explicit about what that verdict is not: an estimate, not a calibration.

The Two Questions That Decide Detectability

A MOX sensor can only detect a molecule that (a) actually reaches its surface in meaningful quantity, and (b) is redox-active — capable of donating or accepting electrons at the hot SnO₂ surface. That is the entire logic:

  • Volatility decides how much is in the headspace.
  • Redox character decides whether it perturbs the sensor.
  • Their product decides feasibility.

Both properties are computable from the molecular graph before you ever open a bottle.

From Graph to Physical Properties

A SMILES string is a compact graph encoding of a molecule. The smellability stack parses that graph and applies Joback group-contribution methods: fragment the molecule into known functional groups, sum their contributions, and recover bulk properties such as normal boiling point T_b and molecular weight. From T_b and structure, effective vapor pressure and headspace concentration follow via the standard thermodynamic relations (Clausius–Clapeyron / Antoine forms).

The arithmetic behind the headline numbers in this essay:

headspace ppmPvap(T)Ptotal×106\text{headspace ppm} \propto \frac{P_{\text{vap}}(T)}{P_{\text{total}}} \times 10^6

Two worked examples make the dynamic range concrete. At 25 °C:

  • Isoamyl acetate — vapor pressure ≈ 700 Pa, giving a saturated headspace around 6,900 ppm. This is why banana oil is trivial for a MOX sensor: the air above the bottle is a thick fog of it.
  • Cinnamaldehyde — vapor pressure ≈ 1.3 Pa, giving a saturated headspace around 13 ppm. Still detectable — the MOX floor is roughly 1 ppm — but three orders of magnitude weaker than the banana ester.

The gap between these two molecules is the whole feasibility story in miniature: not "can the sensor respond to cinnamaldehyde" (it can) but "how carefully must you capture, concentrate, or calibrate to use that response." A verdict is never just yes/no; it is a grade.

Redox: The Sign of Detectability

The second axis is chemistry. SnO₂ sensing relies on the gas either releasing electrons (reducing) or trapping them (oxidizing). The stack classifies each molecule accordingly:

  • Reducing gases — alcohols, aldehydes, most hydrocarbons, ammonia — lower the sensor's resistance (negative direction). These are the bread-and-butter of MOX sensing.
  • Oxidizing gases — NO₂, O₃ — raise it (positive direction). Rarer in everyday organic vapors but strongly detectable.
  • Redox-inactive molecules — saturated hydrocarbons of low reactivity, or molecules whose functional groups neither donate nor accept at the operating temperature — produce little or no signal no matter how volatile they are.

The two axes compose into a verdict matrix: volatility × redox. A volatile, redox-active molecule is an ideal MOX target (green). A non-volatile redox-active molecule and a volatile redox-inactive molecule are both weak (yellow) — for different reasons, and the remedy differs (concentrate the headspace in one case; choose another transduction technology in the other). A molecule that is neither is effectively invisible to this sensor class (red).

The Validation Behind the Estimates

None of this is asserted from a textbook; the property estimates are validated against measured data:

  • Joback boiling-point accuracy: mean absolute error ≈ 27 °C on a 716-compound VOC validation set (inorganics excluded). Good enough to place molecules on the volatility axis correctly for feasibility purposes; not good enough to claim metrology.
  • Implementation parity: the pure-Python and RDKit-SMARTS paths reproduce each other exactly (|Δ| = 0.000 K) on the 720-compound odour-threshold corpus. Parity is path-to-path — the two implementations agree with each other perfectly, which is a reproducibility guarantee, not a prediction-accuracy guarantee.
  • Odour-threshold prediction: the smellability model predicts human detection thresholds with R² ≈ 0.575 on a reference corpus — a mediocre but real correlation, and it is reported as exactly that.

These numbers matter because they define the tool's envelope. The estimates are strong enough to sort molecules into feasibility tiers and to rank candidate targets before lab work. They are not strong enough to print a certified concentration on a bottle. The tool says so itself, everywhere.

The Feasibility Verdict, and Its Boundary

The verdict is a grade with three inputs — volatility, redox, and the sensor's own operating floor:

Volatile?Redox-active?Verdict
YesYesGreen — strong MOX target
YesNoYellow — need another transduction
NoYesYellow — need headspace concentration
NoNoRed — effectively invisible

Two hard limits bound the verdict. First, it is not a calibrated concentration. Headspace ppm from vapor pressure is a thermodynamic estimate of the saturated case at a given temperature; it says nothing about your actual jar, your airflow, or your sensor's (a, b) on that day. Second, it is per-molecule, not per-mixture. Real smells are blends, and the feasibility verdict is computed for isolated molecules. A mixture's verdict is the composition of its components' verdicts, weighted by their relative volatility — a statement about the headspace, not a guarantee of identification in a blend.

Why This Matters Before You Build Anything

The pragmatic payoff is that feasibility analysis belongs at the start of a project, not the end:

  • It tells you which substances an array can plausibly detect, so you buy the right transduction technology.
  • It warns you about the weak cases (low vapor pressure, redox-inert classes) before you record a week of data that produces nothing.
  • It sets expectations for capture protocol — the 13 ppm cinnamaldehyde demands sealed-bag collection and care; the 6,900 ppm banana ester does not.
  • It is the tool that turns "can we make an e-nose for X?" into a budgeted engineering question instead of a marketing claim.

A MOX electronic nose is a volatility-and-redox instrument. The smellability stack makes that tautology useful by computing, from a structure string alone, where a molecule sits on both axes — with measured error bars, and with the boundary between estimate and calibration drawn explicitly. That boundary is the discipline this field needs most.

Sources & Further Reading

  • OpenSmell master reference, §7.11 (the honesty rules), §11.8 (odorant chemistry), §8.6 (quantified claims, incl. the 716-VOC Joback validation and the 720-compound parity corpus).
  • opensmell/opensmell/mox/smellability/compounds.py — the worked vapor-pressure examples (isoamyl acetate 700 Pa, cinnamaldehyde 1.3 Pa).
  • The smellability SDK's feasibility engine in the OpenSmell monorepo.
  • Dravnieks, A. Atlas of Odor Character Profiles (1985) — the perceptual reference for structure–odour work.