step_sec_detector_delay() creates a specification of a recipe step that
corrects for volume delays between detectors in multi-detector SEC systems.
Arguments
- recipe
A recipe object.
- reference
Character name of the reference detector column (typically RI). All other detectors will be aligned to this reference.
- targets
Character vector of detector column names to shift. If
NULL, all measure columns except the reference will be shifted.- delay_volumes
Named numeric vector of delay volumes in mL. Names should match the target column names. Positive values indicate the detector sees the sample after the reference.
- delay_times
Named numeric vector of delay times in minutes. Alternative to
delay_volumes. Requiresflow_rateto be specified.- flow_rate
Flow rate in mL/min. Required if using
delay_times.- method
Method for shifting signals:
"shift"(default): Simple index shift (fastest, slight edge effects)"interpolate": Linear interpolation (smoother, preserves signal shape)
- role
Not used by this step.
- trained
Logical indicating if the step has been trained.
- skip
Logical. Should the step be skipped when baking?
- id
Unique step identifier.
Details
In multi-detector SEC systems, detectors are connected in series and separated by tubing. This causes each detector to see the same analyte at different times. For accurate molecular weight calculations that combine signals from multiple detectors (e.g., RI + MALS for absolute MW), these delays must be corrected.
Typical detector order and delays:
UV detector: Often first, minimal delay
RI detector: Common reference detector
MALS detector: Often has 0.1-0.3 mL delay from RI
Viscometer: May have 0.2-0.5 mL delay
Determining delay volumes:
Inject a narrow standard and record all detector signals
Measure the time offset between peak maxima
Convert to volume: delay_volume = time_offset × flow_rate
Examples
if (FALSE) { # \dontrun{
library(recipes)
library(measure)
# Correct UV and MALS signals relative to RI
rec <- recipe(~., data = sec_triple_detect) |>
step_measure_input_long(ri_signal, location = vars(elution_time), col_name = "ri") |>
step_measure_input_long(uv_signal, location = vars(elution_time), col_name = "uv") |>
step_measure_input_long(mals_signal, location = vars(elution_time), col_name = "mals") |>
step_sec_detector_delay(
reference = "ri",
delay_volumes = c(uv = -0.05, mals = 0.15)
) |>
prep()
} # }