step_sec_lals() creates a specification of a recipe step that processes
low-angle light scattering (LALS) signals for absolute molecular weight.
Usage
step_sec_lals(
recipe,
measures = NULL,
concentration_col = NULL,
angle = 7,
laser_wavelength = 670,
dn_dc = NULL,
solvent_ri = 1.333,
optical_constant = NULL,
calibration_constant = NULL,
output_mw = "mw_lals",
min_signal = 0.01,
role = NA,
trained = FALSE,
skip = FALSE,
id = recipes::rand_id("sec_lals")
)Arguments
- recipe
A recipe object.
- measures
Character vector of LALS measure columns. If
NULL, the step searches for measure columns containing "lals".- concentration_col
Name of the concentration measure column (from
step_sec_concentration()or similar).- angle
Detection angle in degrees (must be < 20 for LALS).
- laser_wavelength
Laser wavelength in nm.
- dn_dc
Refractive index increment (mL/g). Required unless
optical_constantis provided.- solvent_ri
Solvent refractive index. Default is 1.333 (water).
- optical_constant
Optional optical constant K; overrides dn/dc.
- calibration_constant
LALS instrument calibration constant. If
NULL, results are in relative units.- output_mw
Name for the molecular weight output column.
- min_signal
Minimum signal threshold (as fraction of max) below which MW is set to NA.
- role
Role for generated columns.
- trained
Logical indicating if the step has been trained.
- skip
Logical. Should the step be skipped when baking?
- id
Unique step identifier.
Details
LALS provides absolute MW using a low-angle detector (e.g., ~7 degrees). It assumes P(theta) ~ 1 for small particles and is most accurate when angular dependence is minimal.
When to use LALS vs MALS:
LALS: Preferred for smaller molecules (Rg < ~10 nm) or when multi-angle data is not available. Single-angle measurement is faster and simpler but cannot determine Rg.
MALS: Required for large molecules where angular dependence is significant. Provides both Mw and Rg from extrapolation to zero angle.
Examples
if (FALSE) { # \dontrun{
library(recipes)
library(measure)
rec <- recipe(~., data = sec_triple_detect) |>
step_measure_input_long(ri_signal, location = vars(elution_time), col_name = "ri") |>
step_measure_input_long(lals_signal, location = vars(elution_time), col_name = "lals") |>
step_sec_concentration(detector = "ri", injection_mass = 0.2, flow_rate = 1.0) |>
step_sec_lals(measures = "lals", concentration_col = "ri", dn_dc = 0.185) |>
prep()
} # }