step_sec_mals() creates a specification of a recipe step that processes
multi-angle light scattering (MALS) detector signals to determine absolute
molecular weight and radius of gyration at each elution slice.
Usage
step_sec_mals(
recipe,
mals_col = NULL,
concentration_col = NULL,
dn_dc = NULL,
dn_dc_column = NULL,
wavelength = 658,
solvent_ri = 1.333,
angles = 90,
formalism = c("zimm", "debye", "berry"),
calibration_constant = NULL,
output_mw = "mw_mals",
output_rg = "rg",
min_signal = 0.01,
role = NA,
trained = FALSE,
skip = FALSE,
id = recipes::rand_id("sec_mals")
)Arguments
- recipe
A recipe object.
- mals_col
Name of the MALS detector measure column. For single-angle detectors (RALS/LALS), this is the only signal needed.
- concentration_col
Name of the concentration measure column (from
step_sec_concentration()or similar).- dn_dc
Refractive index increment (mL/g). Required for absolute MW.
- dn_dc_column
Column containing sample-specific dn/dc values.
- wavelength
Laser wavelength in nm. Default is 658 (common for MALS).
- solvent_ri
Solvent refractive index. Default is 1.333 (water). Common values: water = 1.333, THF = 1.407, toluene = 1.497.
- angles
Numeric vector of detection angles in degrees. For single-angle detectors, provide just one value (e.g.,
90for RALS). Default assumes a 90-degree detector.- formalism
Angular extrapolation method for multi-angle data:
"zimm"(default),"debye", or"berry".- calibration_constant
MALS instrument calibration constant. If
NULL, results are in relative units. Obtain from toluene standard calibration.- output_mw
Name for the molecular weight output column. Default is
"mw_mals".- output_rg
Name for the radius of gyration output column. Default is
"rg". Only calculated if multiple angles are provided.- min_signal
Minimum signal threshold (as fraction of max) below which MW is set to NA. Default is 0.01.
- 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.
Value
An updated recipe with the new step added, containing absolute MW (and optionally Rg) at each elution point.
Details
Light scattering provides absolute molecular weight without calibration standards. The fundamental relationship is:
$$\frac{K \cdot c}{R(\theta)} = \frac{1}{M_w} \cdot P(\theta) + 2A_2 c$$
where:
K is the optical constant
c is the concentration
R(theta) is the excess Rayleigh ratio
Mw is the weight-average molecular weight
P(theta) is the particle scattering function
A2 is the second virial coefficient
The optical constant K is calculated as: $$K = \frac{4\pi^2 n_0^2 (dn/dc)^2}{N_A \lambda^4}$$
Formalisms for Angular Extrapolation:
Zimm: Kc/R vs sin^2(theta/2) - best for random coils
Debye: Kc/R vs sin^2(theta/2) - similar to Zimm
Berry: sqrt(Kc/R) vs sin^2(theta/2) - better for large particles
Single-Angle vs Multi-Angle:
Single angle (RALS/LALS): Provides Mw only, assumes P(theta) ~ 1
Multi-angle (MALS): Provides both Mw and Rg from angular dependence
Note
Accurate results require:
Known and accurate dn/dc value
Calibrated instrument (calibration_constant from toluene)
Accurate concentration from RI detector
Clean baseline and aligned detectors
Examples
if (FALSE) { # \dontrun{
library(recipes)
library(measure)
# Single-angle (90 degree) light scattering
rec <- recipe(~., data = sec_triple_detect) |>
step_measure_input_long(ri_signal, location = vars(elution_time), col_name = "ri") |>
step_measure_input_long(mals_signal, location = vars(elution_time), col_name = "mals") |>
step_sec_baseline() |>
step_sec_ri(dn_dc = 0.185) |>
step_sec_concentration(detector = "ri", injection_mass = 0.2, flow_rate = 1.0) |>
step_sec_mals(
mals_col = "mals",
concentration_col = "ri",
dn_dc = 0.185,
wavelength = 658,
angles = 90
) |>
prep()
} # }