RIDING BYTES
← All insights

August 1, 2026 · 6 min read

Uncertainties in SENAITE: how the ranges work and what they do not do

How SENAITE picks the uncertainty for a result, how it rounds result and uncertainty together, where it hides the uncertainty, and why it does not use it to judge a specification.

Uncertainties in SENAITE: how the ranges work and what they do not do

A result of 12.3 µg/L lead tells the client less than 12.3 ± 1.5 µg/L. The second form says how far the last digit can be trusted, and ISO/IEC 17025 expects a laboratory to know that figure for its methods. SENAITE can carry it on every numeric result. This post covers how it chooses the value, how it prints it, and one thing people often assume it does, although it does not.

Where the ranges live

Uncertainties are set on the Analysis Service, on the Uncertainties tab. The Uncertainty field is a table with three columns: Range min, Range max and Uncertainty value. Each row says: a result in this range carries this uncertainty.

A lead service in µg/L might look like this:

Range minRange maxUncertainty value
050.5
5.01201.5
20.0110008%

The value is either absolute, in the unit of the result, or a percentage of the result when it ends with %. A result of 12.3 picks up ± 1.5. A result of 50 picks up 8 % of 50, so ± 4.

Uncertainties tab of the service Lead with four ranges: 0 to 0.010 uncertainty 0.001, 0.010 to 0.050 uncertainty 0.002, 0.050 to 0.100 uncertainty 0.005, 0.100 to 999 uncertainty 2%. Calculate Precision from Uncertainties is checked.
Uncertainty ranges for lead: absolute values at low concentrations, a percentage above 0.1 mg/L.

How SENAITE picks a row

The rule in the code is short. SENAITE walks the rows in order and takes the first one where Range min <= result <= Range max. Both ends are inclusive. Three consequences follow, and all three show up in real setups:

  • Overlapping rows. If one row ends at 5 and the next starts at 5, a result of exactly 5 gets the uncertainty of the row listed first.
  • Gaps. With rows 0 to 5 and 5.01 to 20, a result of 5.005 matches no row and is reported without uncertainty. Choose the boundaries at the precision the method actually reports, so a result can never fall between them.
  • No uncertainty wanted. A value of 0, or below 0, suppresses the uncertainty for that range. This is cleaner than leaving a gap.

Only numeric results get an uncertainty. Text results, selection lists and dates never do.

Fixed when the sample is registered

An analysis copies the settings of its service when the sample is registered, and the uncertainty ranges travel with it. If you correct a range on the service next month, samples registered before the change keep the old ranges. That is right for traceability, but it surprises labs that fix a typo and expect open samples to follow.

Letting the analyst enter it

Some methods produce their own uncertainty per measurement, for example from counting statistics or from the instrument software. For those, turn on Allow manual uncertainty value input. Results entry then gets a +- input next to the result. A value entered there replaces the range lookup for that analysis; if the analyst leaves it empty, the ranges apply as before.

Rounding result and uncertainty together

By default a service rounds its results to a fixed number of decimals (Precision as number of decimals). With Calculate Precision from Uncertainties turned on, the uncertainty decides instead: it is rounded to its first significant digit, and the result is rounded to the same decimal position.

An example with a 2% range: a result of 1.751 has an uncertainty of 0.03502. Rounded to one significant digit that is 0.04, so the result is shown as 1.75 ± 0.04. The stored result stays 1.751; only the display changes.

If the analyst entered the uncertainty by hand, SENAITE keeps the digits that were typed instead of rounding them away.

Analysis Lead with result 1.75 mg/L and uncertainty ± 0.04 mg/L, status To be verified.
A lead result of 1.751 falls into the 2% row: 0.035, rounded up to 0.04, and the result is shown to the same two decimals.

Where no uncertainty is shown

Below the Lower Limit of Quantification (LLOQ) and above the Upper Limit of Quantification (ULOQ), SENAITE shows no uncertainty at all. A result outside the quantifiable range is displayed as Not detected, Detected but < LLOQ or > ULOQ, and an uncertainty next to such a statement would mean nothing. The same applies to results entered as a detection limit, such as < 0.5. The limits are covered in the post on detection limits.

On the report

The default report templates print the uncertainty next to the result as [± 1.5], for every result that has one. The value is formatted by the same rules as in the sample view.

What the uncertainty does not do

SENAITE does not use the uncertainty to decide whether a result meets its specification. The out-of-range check compares the bare result with the Min and Max of the specification. A result of 10.4 ± 1.5 against a maximum of 10 is flagged as out of range, even though its interval reaches below the limit.

How to treat such a result is a decision rule. ISO/IEC 17025 (clause 7.8.6) asks the laboratory to define one and apply it consistently when it states conformity. SENAITE offers one tool for it: the Min warn and Max warn columns of the specification, often called shoulders. With a Max warn of 11.5, the result 10.4 is still out of range, but it is marked Result in shoulder range with its own icon. That tells the verifier the rule applies and the result needs a judgement rather than an automatic rejection. Derive the shoulder width from your uncertainty at the limit, and write the rule down in your procedures, because SENAITE will not apply it for you.

Before you configure

  • Take the ranges from your own validation and QC data. A supplier data sheet is a starting point, not the performance of your method in your lab.
  • Decide per method between absolute and percentage values. Near the lower end of the working range, absolute values usually describe the method better; at higher concentrations a percentage often does. Mixing both across rows of one service is supported.
  • Write the boundaries without gaps, at the precision the method reports.
  • Decide whether results near a limit need a shoulder in the specification, and agree on the rule that goes with it.
Two people reviewing notes on paper next to a laptop

Bring this to your lab

Whether you are evaluating SENAITE, scaling it across sites, or wiring up instruments and monitoring, the team that wrote the platform is the team you talk to.