This page builds the calibration curves used for quantification. It runs
peak detection across every detected calibration standard, then fits a
linear response-ratio curve for each analyte against its paired internal
standard.
Workflow
- Load batches — refresh the list of batches and select the one to process. The batch must already have been imported; the page discovers labelled calibration standards automatically.
- RT reference level — optional. Pick one detected standard level to propagate its observed retention times to all other levels, or choose
None to rely on the expected RTs stored in the compound panel. If the run has RT drift, pairing this with RT drift correction usually gives the most stable identification.
- Auto-optimise & build calibration — launch a parameter grid search. The scorer evaluates every combination on the lowest, middle, and highest detected calibration levels, then applies the winning parameters to all detected levels and builds the response-ratio curves.
- Use saved parameters — skip the grid search and re-run curve building with the most recently saved parameter set.
- Benzo (b,k) Fluoranthene split override — if the BBK fused doublet is being over-split or incorrectly merged by the batch-wide winner, set a per-compound split value here. Manual values are preserved when you re-run per-compound or batch-wide auto-optimise.
- Quantify — once curves are built, launch Step 2 sample quantification. This saves any curve exclusions and opens the quantification review page.
Controls
- RT reference level — see Workflow above.
- RT drift correction — when enabled, each analyte's expected RT is shifted by the observed delta of its paired ISTD. Leave this on unless you want strict absolute RT matching.
- Force through origin — when enabled (default), the calibration curve is constrained to pass through zero concentration / zero response (y = slope·x). Uncheck to allow a non-zero intercept.
- Baselines — choose which baseline algorithms to include in the grid:
flatfit (flat baseline), arpls (asymmetrically reweighted penalised least squares), asls (asymmetric least squares), or any combination. Testing fewer baselines makes the job proportionally faster.
- Smooth range / steps — set the minimum and maximum baseline smoothness and the number of log-spaced steps. The default sweep is 0.05–10.0 in 4 steps (0.05, 0.29, 1.71, 10). Smaller ranges keep the run fast; larger ranges explore more baseline curvature options.
- Split range / steps — set the minimum and maximum peak-split threshold and the number of linear-spaced steps. The default sweep is 0.03–0.30 in 4 steps (0.03, 0.12, 0.21, 0.30). Lower values split more aggressively; higher values merge fused shoulders.
- Benzo (b,k) Fluoranthene split override — a per-compound split threshold saved independently of the batch-wide grid. It is applied to BBK in both the auto-optimise scorer and the curve builder. Save writes the manual value to the database; Default clears it and falls back to the hard-coded default. The status label shows
manual (saved via this page), db (written by per-compound auto-optimise), hardcoded, or default.
Benzo (b,k) Fluoranthene split override
Benzo (b,k) Fluoranthene elutes as a fused doublet that must be
integrated as a single peak. The batch-wide auto-optimiser may choose a
split value that treats the two shoulders as separate peaks, which
breaks the calibration and produces unstable quantification. Use this
control to set a per-compound split value for BBK that is independent
of the grid search.
- Value — the minimum drop threshold between fused peaks. A value of
0.5
keeps the BBK envelope as one integrated peak. Larger values merge more aggressively;
smaller values split more aggressively.
- Save — writes the manual value to the database. Saved manual values are
preserved when you re-run per-compound auto-optimise or the batch-wide
Auto-optimise & build calibration workflow.
- Default — clears the manual entry and falls back to the hard-coded default
(
0.5 for BBK).
- Status label — shows the source of the current value:
manual (saved via this page), db (written by per-compound auto-optimise),
hardcoded, or default.
- The override is applied in the peak picker, the curve builder, sample
quantification, and the Step 2 review page. Once you press
Quantify, the calibration curves are saved and will remain stable
until you explicitly recompute them.
How the grid is built
Total combinations = (number of selected baselines) × (smooth steps) × (split steps).
With the defaults and two baselines, that is 2 × 4 × 4 = 32 combinations.
Adding the third baseline gives 48; reducing smooth/split to 3 steps each with one baseline gives only 9 combinations.
The grid spacing is chosen automatically to keep the search practical:
smooth is log-spaced because MOCCA2 smoothness operates over orders of magnitude.
split is linear-spaced because it is a relative drop threshold.
- Step counts are clamped between 3 and 12 to prevent accidental runaway grids.
How the auto-optimiser scores each combination
Every parameter combination is scored on the three representative calibration levels:
the lowest, middle, and highest detected levels. This avoids picking a winner that happens to work well
on only one concentration.
The scorer is a weighted aggregate that rewards:
- Detected peaks / expected peaks — 35% of the score.
Counts every expected peak, including shared-m/z isomers that must be resolved separately.
- Detected compounds / expected compounds — 20% of the score.
A compound is detected if at least one peak is found within ±0.15 min of its expected RT.
- Peak rate and detection rate — 15% each.
These are the per-compound and per-peak success rates shown in the Top 5 table as percentages.
- Split quality — 10%.
Rewards fully resolving fused isomer groups (e.g. Phenanthrene/Anthracene, Benzo-PAHs).
- Boundary/baseline quality — small positive/negative adjustments for
tight valley boundaries, flat baseline under the peak, and stable qualifier/quantifier ion ratios.
Penalties are applied for:
- Missed peaks: up to −30% of the score.
- Partially-split isomer groups: up to −15%.
- Completely-merged isomer groups: up to −30%.
- Curved baselines, baseline rising into the peak body, or noisy ion ratios: small negative adjustments.
The final score is normalised to a 0–1 scale, where 1.0 means every expected peak
was found, every isomer group was perfectly split, and the baseline/boundary quality was good.
The per-level scores are averaged across the three representative levels, and the combination with the
highest average wins. There is no R² or minimum-height term in the score; S/N < 2:1 rejection is
handled inside the peak detector.
Manual parameter override
The MOCCA2 parameters (last saved winner) panel shows the winning parameter set from the most recent grid search. You can edit these values and test or save them without re-running the whole grid:
- Baseline / Smooth / Split / Noise mult — edit any field to preview a different parameter set on the calibration XICs and curves.
- Apply manual entries — re-run curve building with the edited values for a quick preview. This does not overwrite the saved winner; use it to test a tweak before committing it.
- Save as winner — persist the edited values as the new saved winner, replacing the previous auto-optimise result. Use saved parameters will then load this set.
The Save parameters button (beside the curve cards) writes the current winner to the database so it survives page reloads and can be reused via Use saved parameters.
The Update expected RTs button updates the compound panel’s expected retention times from the most recent auto-build results.
Top 5 table
After the grid finishes, the page shows the Top 5 parameter combos ranked by score.
The columns are:
- # — rank.
- Baseline / Smooth / Split — the MOCCA2 parameter set.
- Score — the normalised 0–1 score, displayed as a percentage.
- Peak rate — detected peaks / expected peaks, as a percentage.
Shared-m/z isomers each need their own distinct peak.
- Detection rate — detected compounds / expected compounds, as a percentage.
A compound counts as detected if any peak is found within ±0.15 min of its expected RT.
- Use — apply that combo to the curve builder without re-running the grid.
The table is persistent: it survives clicking Use on a different combo, manual overrides,
and page reloads, because it is stored alongside the saved winner in the database.
Common tuning scenarios
- Run takes too long — reduce the number of baselines, or reduce smooth/split steps to 3. Avoid large grids unless you are specifically diagnosing a tricky isomer split.
- Baseline swallowed into peak — choose a larger
smooth, or extend the smooth range upward and increase steps. Also try a higher-concentration level if the peak body is clearer there.
- Fused peaks not split — make sure the split range includes smaller values. Lower
split lets shallower valleys count as separate peaks.
- Single peak over-split — increase the minimum
split, or increase smooth to suppress noisy shoulders.
- Boundaries too wide — lower the maximum
smooth slightly; the scorer penalises wide boundaries, but the baseline must still stay below the peak.
- No winner produced — check the status message. If every combination errors, the grid range may be physically impossible (e.g. split > 1, or negative smoothness), or the scorer may have a code error.
Reading the curve cards
- Calibration curve — response ratio (analyte area / ISTD area) vs concentration. The line is forced through the origin when the Force through origin toggle is checked; otherwise it is a standard linear fit with an intercept.
-
TIC and Mass Spectrum card — below the batch bar. Use the green level pills to scan each calibration level's total-ion chromatogram and the mass spectrum taken at the TIC apex. This is useful for spotting carry-over, solvent delay issues, or unexpected matrix peaks.
-
XIC panel — extracted ion chromatogram for the selected level. The grey shaded area is the baseline; the blue line is the raw signal. Click the level pills (L2–L9) to inspect each level.
- Response table — area, predicted concentration, and residual for each level. Click a level to include/exclude it from the curve fit.
- Ion ratios — the bottom row shows the measured qualifier/quantifier ratios and their 95% confidence intervals. Values outside the expected range may indicate co-elution or poor peak quality.
Compound panel
Expand the panel to edit expected RTs, qual ions, and ISTD assignments.
The Observed RT column is the average retention time
across all detected calibration levels (L2–L9), so it is stable even if
one level has a noisy or shifted peak. The RT reference level
dropdown only affects the Set to reference RTs button; it
does not change the averaged observed-RT display.
Changes are saved with the Save panel button and are used
by all downstream steps.