Simulated Size Exclusion Chromatography (SEC) / Gel Permeation Chromatography (GPC) data for demonstration of molecular weight analysis. The dataset includes both narrow polystyrene calibration standards and polymer samples with broad molecular weight distributions.
Format
A tibble with 7,510 observations and 6 variables:
- sample_id
Sample identifier (standard or polymer name)
- sample_type
Either "standard" or "sample"
- elution_time
Elution/retention time in minutes
- ri_signal
Refractive index detector signal (arbitrary units)
- known_mw
Known weight-average molecular weight (g/mol)
- known_dispersity
Known dispersity (Mw/Mn); ~1.05 for standards
Source
Simulated data generated for the measure package. See
data-raw/generate_datasets.R for the generation script.
Details
SEC/GPC separates molecules by hydrodynamic size, with larger molecules eluting before smaller ones. This allows determination of molecular weight distributions and averages (Mn, Mw, Mz, dispersity).
The dataset is useful for demonstrating:
Baseline correction for chromatography
Calibration curve construction using standards
Molecular weight calculations (step_measure_mw_averages)
Molecular weight distribution analysis
The dataset contains:
Calibration Standards (narrow dispersity polystyrene):
PS_1k: 1,000 g/mol
PS_5k: 5,000 g/mol
PS_20k: 20,000 g/mol
PS_100k: 100,000 g/mol
PS_500k: 500,000 g/mol
Polymer Samples (broad distribution):
Polymer_A through Polymer_E with varying Mw and dispersity
The calibration relationship follows: log10(MW) = 9.5 - 0.35 * time
See also
sec_calibration for the calibration standards summary
hplc_chromatograms for HPLC chromatography data
step_measure_mw_averages for molecular weight calculations
Examples
data(sec_chromatograms)
# View structure
str(sec_chromatograms)
#> tibble [7,510 × 6] (S3: tbl_df/tbl/data.frame)
#> $ sample_id : chr [1:7510] "PS_1k" "PS_1k" "PS_1k" "PS_1k" ...
#> $ sample_type : chr [1:7510] "standard" "standard" "standard" "standard" ...
#> $ elution_time : num [1:7510] 5 5.02 5.04 5.06 5.08 5.1 5.12 5.14 5.16 5.18 ...
#> $ ri_signal : num [1:7510] 1.63 2.29 2.95 1.89 1.97 ...
#> $ known_mw : num [1:7510] 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 ...
#> $ known_dispersity: num [1:7510] 1.05 1.05 1.05 1.05 1.05 1.05 1.05 1.05 1.05 1.05 ...
# Separate standards and samples
library(dplyr)
standards <- sec_chromatograms |> filter(sample_type == "standard")
samples <- sec_chromatograms |> filter(sample_type == "sample")
# Plot standards (if ggplot2 available)
if (requireNamespace("ggplot2", quietly = TRUE)) {
library(ggplot2)
ggplot(standards, aes(x = elution_time, y = ri_signal, color = sample_id)) +
geom_line() +
labs(x = "Elution Time (min)", y = "RI Signal",
title = "SEC Calibration Standards",
color = "Standard")
}