Virridy Home | Lume — Water Quality Sensing Water for Carbon

Channel specificity and interference in a 43-sensor fluorescence array: a four-analyte challenge-spike experiment

Forty-three Lume fluorescence sensors and three In-Situ AquaTroll 500 sondes, held in a common 167.71 L de-ionised water barrel, were dosed with four challenge solutions in sequential cumulative ladders over 4.3 h on 2026-09-01: quinine sulfate to 148.56 ppb, rhodamine to 103.51 ppb, tryptophan to 50 ppb and turbidity to 7.23 NTU. The FDOM, TLF, Burn-in TLF channels each responded to the analyte it exists to measure. The Chl-a channel did not return a resolvable response to its target under this design. Cross-talk between fluorophores is material: the worst case is quinine sulfate on the Burn-in TLF channel at 0.15 of that channel’s response to its own analyte. Turbidity moved every fluorescence channel and is the dominant interferent, reaching 12.4× the own-analyte response per unit on the FDOM channel. Dosing tryptophan last, onto a barrel already carrying the other three analytes, left the tryptophan slope at 109% to 137% of its clean-water value while the baseline had risen to 2.65×: the interferents act as an offset, not a gain change. The turbidity-to-ToF scale remains unresolved, with three candidate anchors spanning 2.6×. Of 43 sensors in the barrel, 13 never reported into the window and 5 more were held out on measured grounds, leaving 25 in the statistics; all are listed individually.

1Motivation

The Lume sensor infers faecal contamination from tryptophan-like fluorescence. That inference rests on an assumption which the programme had never tested directly: that the channel responds to the analyte it is named for, and not appreciably to the other things dissolved or suspended in real water. Field deployments had produced correlations against culture-based references, but a correlation in a river cannot separate a genuine tryptophan response from a response to whatever else co-varies with contamination — coloured dissolved organic matter, algal pigments, or particles.

Three further gaps motivated this experiment. The chlorophyll-a and FDOM variants of the sensor had never been challenged with anything at all. The fleet had no formazin anchor, so its turbidity proxy was reported in raw scatter counts rather than NTU. And nothing was known about how the channels behave when several interferents are present together, which is the ordinary condition of a real water body rather than the exception.

The design question was therefore not “does the sensor work” but the sharper one: for each channel, what does it answer to, how much does it answer to everything else, and does the presence of the everything-else change what it reports about its own analyte?

2Materials and methods

2.1 Barrel and fleet

A 55 US gallon drum was filled to the line with de-ionised water. The instruments standing in it displace 40.82 L — 38.6 L for the sensors as bounding cylinders and 2.25 L for the sondes — which is 19.6 % of the drum, so the working water volume is 167.71 L and not the nominal 208.2 L. Dosing against the drum rating rather than the water would have put every concentration about 24 % over target.

The barrel held 43 Lume sensors across four batches and three In-Situ AquaTroll 500 sondes. Water temperature was actively cycled by a recirculating chiller throughout, which is deliberate and is discussed in §2.5.

2.2 Analytes and ladders

Four challenge solutions were dosed as sequential cumulative ladders, 14 rungs in total over 4.3 h, each rung held 20 min:

Order was an experimental choice, not a convenience. The barrel was never drained, so each analyte is measured on a background containing all the earlier ones and the clean background is a finite resource. It was spent on the channels with no prior data — quinine first, then rhodamine — while tryptophan was deliberately dosed third. Its clean-water response was already characterised, so placing it late converts that rung from a repeat calibration into an interference test, which is the question the existing data could not answer. Turbidity ran last because scattering perturbs every optical channel at once and cannot be undone.

2.3 Signal

The reported signal is the two-way log-model amplitude from the canonical bias-response module, the current S-TLF lineage, and never the raw mon2 reading. Fleet gain spans roughly 250× and low-gain units pedestal-pin, so a raw-mon2 judgement would classify working channels as dead. Each sensor’s amplitude is then expressed relative to its own corrected pre-dose level, so a slope means the same thing on a high-gain and a low-gain unit.

2.4 Corrections

Temperature and drift are removed with the programme’s canonical correction module, fitted per sensor on its own SiPM temperature over the 78.2 h of undosed barrel that precede the first dose, and then applied forward. Nothing is fitted through a dose, because a model fitted across a dose absorbs the response it exists to reveal. Measured on that pre-dose window, the coefficient of variation falls from 4.56 % raw to 0.65 % with temperature alone and 0.29 % with temperature and drift; the drift term was retained on 30 of 30 sensors.

The drift term improves the fit but is not identified as drift. Across the pre-dose window, temperature and the clock correlate at r = −0.83, and cumulative sample count and clock time run at r ≥ 0.997 by construction. Under that collinearity a clock-shaped term and a temperature term cannot be uniquely separated, and the CV improvement quoted above is in-sample. What protects the conclusions is not the fit but the ablation: removing the drift term moves every slope reported below by at most about 1 %.

2.5 Estimator and statistics

Because the analytes were dosed in sequential blocks, only one concentration moves inside any block, and each analyte’s slope is identified from its own block alone: the settled window immediately before the block supplies that block’s zero, and each rung window supplies a point. No multiple regression across collinear predictors is attempted. Slopes are ordinary least squares of relative amplitude on concentration, fitted per sensor and then summarised by the batch median, with the count of sensors, the median R² and the number agreeing in sign reported alongside every estimate.

Temperature cycling was left running throughout and its setpoint never moved. Over the pre-dose window temperature is close to orthogonal to the dosing clock, so a temperature effect cannot masquerade as a dose response; and every 20 min rung contains a wide temperature sweep, which is what allows the quench to be fitted rather than assumed. The cost is that uncorrected traces are dominated by the chiller, so all results below are read on the corrected series.

The three sondes are put through the identical block estimator on their own channels, each relative to its own pre-dose level. No Lume correction is imposed on them, since they are separately compensated instruments. Fluorescence channels reported in RFU are treated as relative; turbidity and conductivity are absolute physical units and are never divided by a baseline.

2.6 Sensor hold-out

Sensors are held out of the group statistics only on measured properties of their own record — no usable amplitude, too few windows, or a correction model the module itself refused to fit — and never because they fitted a dose response badly. Held-out sensors remain in the underlying data and are listed individually in Table 4.

3Results

3.1 Does each channel answer to its own analyte?

FDOM against quinine sulfate. The channel responds, at +0.00647 of its clean-water level per ppb (R² 1.000; 10 sensors, 10/10 agreeing in sign). Over the ladder to 148.56 ppb that is a total excursion of about 0.96× the clean-water level.

Chl-a against rhodamine. No sensor in this batch could be fitted over that block, so the question is unanswered rather than answered in the negative.

TLF (variant batch) against tryptophan. The channel responds, at +0.02165 of its clean-water level per ppb (R² 0.997; 3 sensors, 3/3 agreeing in sign). Over the ladder to 50.00 ppb that is a total excursion of about 1.08× the clean-water level.

TLF (burn-in fleet) against tryptophan. The channel responds, at +0.01724 of its clean-water level per ppb (R² 0.999; 12 sensors, 12/12 agreeing in sign). Over the ladder to 50.00 ppb that is a total excursion of about 0.86× the clean-water level.

Figure 1. Dose response by analyte. Faint lines are individual sensors; bold lines are batch medians with the sensor count in the legend. y is each sensor’s corrected level relative to its own clean-water baseline, on a logarithmic axis because the batches differ by more than a decade in response. A flat line is a channel that did not see the analyte.
quinine sulfate
per ppb
rhodamine
per ppb
tryptophan
per ppb
turbidity
per NTU
FDOM+0.00647n 10 · R² 1.000 · 10/10+0.00091n 10 · R² 0.690 · 10/10+0.00059n 10 · R² 0.677 · 9/10+0.08042n 10 · R² 0.959 · 10/10
Chl-anot fittednot fittednot fittednot fitted
TLF (variant batch)+0.00301n 3 · R² 0.999 · 3/3+0.00069n 3 · R² 0.334 · 3/3+0.02165n 3 · R² 0.997 · 3/3+0.20797n 3 · R² 0.983 · 3/3
TLF (burn-in fleet)+0.00257n 12 · R² 0.999 · 12/12+0.00018n 12 · R² 0.587 · 11/12+0.01724n 12 · R² 0.999 · 12/12+0.11447n 12 · R² 0.938 · 12/12
Table 1. Slope of corrected relative amplitude per unit of analyte, batch median. Shaded cells are the analyte each batch exists to measure; all others are cross-talk. Each cell carries the number of sensors fitted, the median R², and how many sensors agreed in sign.

3.2 Cross-talk between fluorophores

Expressed as a fraction of each batch’s response to its own analyte:

Figure 2. Every batch against every analyte on a logarithmic slope axis. Filled marks are targets, hollow marks cross-talk. Marker shape carries batch identity independently of colour.

3.3 Turbidity

Turbidity moved every fluorescence channel that could be fitted. Expressed against each batch’s own analyte, the per-unit response to turbidity runs 12.4× on FDOM, 9.6× on TLF, 6.6× on Burn-in TLF. On this evidence turbidity is the dominant interferent in the set, not the fluorophores.

On the ToF scatter channel the fleet slope is +0.7574 counts per nominal NTU, i.e. 1.32 NTU per sps. That is the first turbidity anchor this fleet has had. It is not settled: the candidate bases disagree by a factor of about 2.6. Only 1 of 3 sondes fit turbidity at R² ≥ 0.90, and that one measures 0.388 NTU per nominal NTU, so the nominal ladder overstates what was in the water by +158 %.

basisNTU per sps
nominal ladder1.32
2025-12-15 formazin bench1.59
sonde-measured NTU3.40
Table 2. Candidate turbidity anchors for this fleet. These are not alternative estimates of one quantity with overlapping error; they are three different bases that disagree.

3.4 Stacking

Because the barrel was never drained, each block was dosed onto everything before it. By the final block the batches were sitting at TLF 2.65×, Burn-in TLF 2.25×, FDOM 2.10× their clean-water levels.

The decisive comparison is the tryptophan slope, because tryptophan was dosed last and the clean-water scale for that channel is independently known from the 2026-07-16 serial dilution (0.01582 of baseline per ppb). Measured on the loaded barrel it came to 137% on TLF, 109% on Burn-in TLF of that value, i.e. mixed. The interferents therefore act predominantly as an offset rather than a change of gain, which is the difference between a correctable baseline and a model that has to be refitted in the presence of coloured dissolved matter.

blockbatchlevel enteringslope in blockvs clean scale
quinine sulfateFDOM1.000+0.00647
quinine sulfateTLF1.000+0.00301
quinine sulfateBurn-in TLF1.000+0.00257
rhodamineFDOM1.958+0.00091
rhodamineTLF1.441+0.00069
rhodamineBurn-in TLF1.368+0.00018
tryptophanFDOM2.069+0.00059
tryptophanTLF1.625+0.02165137% of clean
tryptophanBurn-in TLF1.390+0.01724109% of clean
turbidityFDOM2.103+0.08042
turbidityTLF2.651+0.20797
turbidityBurn-in TLF2.247+0.11447
Table 3. Level entering each block, against the slope measured inside it. The level column is the accumulated offset; the slope column is the surviving sensitivity.
Figure 3. Batch median level through all 14 rungs, with the four dose blocks shaded. Interference reads as the step between blocks; sensitivity is the slope inside one.

3.5 Comparison with the reference sondes

FDOM channel. The sonde reads +0.00172 per ppb relative to its own baseline on 3 sondes, against the Lume’s +0.00647, a ratio of 0.27. The two instruments disagree.

The sonde is not a clean reference in this experiment. 2 of 3 sondes fail to fit the turbidity ladder at R² ≥ 0.90 at all. Sonde agreement is therefore treated here as supporting evidence where it exists, and as uninformative where it does not; it is never read as a refutation of a Lume response.

3.6 Sensor failures

Of the 43 sensors in the barrel, 13 never reported into the experiment window at all and 5 more were held out of the group statistics, leaving 25. Every hold-out was flagged on a measured property of its own record, never on how well it fitted a dose response, and none was removed from the underlying data.

Chl-a: 4 held out. This is most of the batch, so any statement about this channel rests on the minority that survived and should be read as indicative. Reasons are listed in Table 4.

TLF (burn-in fleet): 1 held out. Reasons are listed in Table 4.

sensorbatchmeasured reason for hold-out
500134Chl-ano usable amplitude in any window
500151Chl-ano usable amplitude in any window
500210Chl-ano usable amplitude in any window
50081Chl-aonly 1 of 15 windows carry an amplitude; training temperature range is 2.0 °C, below the degree-3 floor of 4 °C
500105Burn-in TLFno usable amplitude in any window
Table 4. Sensors held out of the group statistics, with the measured reason for each. None was excluded for fitting a dose response poorly.

4Discussion

The result with the clearest operational consequence is the separation of offset from gain. Stacked interferents raised the fluorescence baseline substantially, yet the tryptophan slope measured on that loaded barrel stayed close to its independently known clean-water value. An offset is what a baseline correction is for; a gain change would have meant that any field model calibrated in clean conditions is systematically wrong in the presence of coloured dissolved matter. On this evidence the first is what happens and the second is not.

Against that, cross-talk is not negligible and it is not symmetric. Each fluorescence channel sees the other fluorophores at a fraction of its own analyte, and the fraction grows with concentration rather than staying fixed, so a single subtractive correction fitted at one level will not hold across a range. More consequentially, turbidity moves every channel far more strongly per unit than any of the fluorophores do, which makes a turbidity term a requirement rather than a refinement in any model built on these channels.

The chlorophyll-a batch is the clearest negative result of the experiment, and it is a hardware result rather than a specificity one. Most of that batch produced no usable amplitude anywhere in the run, in water that a working chlorophyll channel on the reference sonde read well above its floor. A channel that cannot produce a signal has not been shown to be specific; it has been shown not to be measuring.

Finally, the reference instrumentation underperformed the array it was there to check. The sonde FDOM channel did not respond to the analyte on which its own scale is defined, and most of the sondes could not fit the turbidity ladder. This is why the turbidity anchor remains open: the experiment produced a usable relationship between scatter counts and dosed turbidity, but no trustworthy independent measurement of what the dosed turbidity actually was.

5Limitations

6Conclusions

  1. The FDOM channel answers to quinine sulfate at +0.00647 per ppb, 10 sensors, 10/10 agreeing in sign.
  2. The TLF (variant batch) channel answers to tryptophan at +0.02165 per ppb, 3 sensors, 3/3 agreeing in sign.
  3. The TLF (burn-in fleet) channel answers to tryptophan at +0.01724 per ppb, 12 sensors, 12/12 agreeing in sign.
  4. The Chl-a channel returned unmeasurable to rhodamine under this design. No sensor could be fitted.
  5. Fluorophore cross-talk is material at worst: quinine sulfate reads 0.15 of the Burn-in TLF channel’s own analyte.
  6. Turbidity is the dominant interferent and moves every channel, so a turbidity term is not optional in any field model built on these channels.
  7. Stacked interferents act as an offset and leave the gain close to intact, so a baseline correction is the right response and a refit is not indicated by this run.
  8. The NTU scale is unresolved across 2.6× and needs a turbidity reference this barrel did not have.

7Data availability and reproduction

The dataset is locked at the closing instant of the experiment: the cohort definition carries a hard stop, so re-running the extraction reproduces this window and cannot extend it. The full interactive figures, the dose log and the per-rung record are at the spike test page, and the derivation of every pour is at the dosing record.

This report is generated, not written by hand. Every number and every verdict in it is composed from data/spike_analysis.json at build time, so re-running the analysis rewrites the prose rather than leaving it to disagree with the data:

node scripts/spike_corrections.mjs && python3 scripts/spike_analysis.py --json && python3 scripts/build_spike_report.py