Skip to contents

step_sec_viscometer() creates a specification of a recipe step that processes differential viscometer signals to calculate specific viscosity at each elution point.

Usage

step_sec_viscometer(
  recipe,
  dp_col = NULL,
  ip_col = NULL,
  output_col = "specific_visc",
  viscometer_constant = 1,
  min_signal = 0.01,
  role = NA,
  trained = FALSE,
  skip = FALSE,
  id = recipes::rand_id("sec_viscometer")
)

Arguments

recipe

A recipe object.

dp_col

Name of the differential pressure (DP) measure column.

ip_col

Name of the inlet pressure (IP) measure column. If NULL, assumes a single-capillary viscometer where DP is directly proportional to specific viscosity.

output_col

Name for the specific viscosity output column. Default is "specific_visc".

viscometer_constant

Instrument calibration constant. Default is 1.0. Obtain from viscosity standard calibration.

min_signal

Minimum signal threshold (as fraction of max) below which viscosity 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 specific viscosity at each elution point.

Details

Differential viscometers measure the pressure difference between a sample and reference capillary to determine solution viscosity. The specific viscosity is calculated from the differential pressure (DP) and inlet pressure (IP):

$$\eta_{sp} = \frac{4 \cdot DP}{IP - 2 \cdot DP}$$

For single-capillary viscometers or when IP is not available: $$\eta_{sp} = K \cdot DP$$

where K is a calibration constant.

Viscometry in SEC:

  • Provides specific viscosity at each MW slice

  • Combined with concentration gives intrinsic viscosity [eta]

  • Used for universal calibration: log([eta] * M) vs retention

  • Essential for branching analysis (g' = [eta]_branched / [eta]_linear)

Note

For intrinsic viscosity calculation, use step_sec_intrinsic_visc() after this step.

Examples

if (FALSE) { # \dontrun{
library(recipes)
library(measure)

# Process differential viscometer data
rec <- recipe(~., data = sec_visc_data) |>
  step_measure_input_long(dp_signal, location = vars(elution_time), col_name = "dp") |>
  step_measure_input_long(ip_signal, location = vars(elution_time), col_name = "ip") |>
  step_sec_baseline() |>
  step_sec_viscometer(dp_col = "dp", ip_col = "ip") |>
  prep()
} # }