Skip to content
Kenneth Kusima edited this page Jan 24, 2026 · 32 revisions

Quantitative Analysis Methodology: TAP–MS Calibration

This repository implements a rigorous quantitative analysis workflow for Temporal Analysis of Products (TAP) mass spectrometry data. Unlike steady-state MS analysis, which often relies on relative intensity ratios, TAP requires the conversion of time-resolved electrical signals (counts or Amps) into absolute molar flux ($\text{nmol} \cdot \text{s}^{-1}$).

Because TAP experiments rely on the precise analysis of transient pulse shapes (moments analysis), maintaining strict mass balance is critical. This software achieves this using a dual-factor calibration logic:

  1. Dynamic Normalization: Using an internal inert standard (e.g., Argon) to correct for pulse-to-pulse variations in reactor state.
  2. Static Calibration: Using a species-specific factor to account for fundamental ionization physics.

1. The Physical Model

The fundamental equation used to transform the raw mass spectrometer signal $S(t)$ into molar flux $\Phi(t)$ is derived from the requirement that the integral of the signal must equal the known injected molar amount.

The master equation implemented in the code is:

$$ \Phi_X(t) = \underbrace{\left[ S_X(t) - B \right]}_{\text{Net Signal}} \times \underbrace{K_{pulse}}_{\text{Machine State}} \times \underbrace{\alpha_X}_{\text{Chemical Identity}} $$

Nomenclature

Symbol Unit Description
$\Phi_X(t)$ $\text{nmol} \cdot \text{s}^{-1}$ Molar Flux of species $X$ leaving the reactor.
$S_X(t)$ $\text{a.u.}$ Raw Intensity signal from the mass spectrometer at time $t$.
$B$ $\text{a.u.}$ Baseline background signal (vacuum level) to be subtracted.
$K_{pulse}$ $\frac{\text{nmol} \cdot \text{s}^{-1}}{\text{a.u.}}$ Intensity-to-Flux Constant. A dynamic scalar derived from the inert tracer in the current pulse.
$\alpha_X$ Dimensionless Calibration Factor. A static scalar representing the relative detection efficiency of species $X$ vs. the inert reference.

2. Parameter Definitions & Derivation

A. Intensity-to-Flux Constant ($K_{pulse}$)

  • Code Variable: config['conv']
  • UI Label: Intensity -> Flux Conversion
  • Nature: Dynamic (Recalculated for every pulse/peak)

Purpose: This factor normalizes the data against the "machine state" at the exact moment of the experiment. It compensates for variables that drift over time, such as detector gain, vacuum chamber pressure, and slight variations in the pulse valve injection size.

Derivation: It is calculated by integrating the signal of the co-pulsed inert tracer (e.g., Argon) where the injected amount is known (calibrated sample loop).

$$ K_{pulse} = \frac{N_{Ar, injected}}{\int_{0}^{\infty} S_{Ar}(t) , dt} $$

** Implementation Note:** In multi-peak experiments (e.g., pump-probe), this value is defined separately for each peak (e.g., c_global_0, c_global_1) to account for different loop volumes or detector drift between events.

B. Calibration Factor ($\alpha_X$)

  • Code Variable: calibration_factor
  • UI Label: Calibration Factor (AMU X)
  • Nature: Static (Determined offline, constant for the species)

Purpose: This is a material constant that corrects for the fact that the mass spectrometer is not equally sensitive to all molecules. It encapsulates the ratio of probabilities for Ionization ($\sigma$), Transmission ($T$), and Fragmentation ($f$).

Derivation: This factor is determined in a separate offline calibration experiment where a binary mixture of known composition (e.g., 50% Ar / 50% Reactant) is pulsed repeatedly.

$$ \alpha_X = \frac{Sensitivity_{Ar}}{Sensitivity_{X}} = \frac{\sigma_{Ar} \cdot T_{Ar} \cdot f_{Ar}}{\sigma_X \cdot T_X \cdot f_X} $$

Once determined, this value is "hard-coded" or entered once for the specific AMU and remains constant across all experiments involving that species.


Here is the updated Markdown code, restructured to include a dedicated Transport Analysis section as requested.

Markdown

Quantitative Analysis Methodology: TAP–MS Calibration

This repository implements a rigorous quantitative analysis workflow for Temporal Analysis of Products (TAP) mass spectrometry data. Unlike steady-state MS analysis, which often relies on relative intensity ratios, TAP requires the conversion of time-resolved electrical signals (counts or Amps) into absolute molar flux ($\text{nmol} \cdot \text{s}^{-1}$).

Because TAP experiments rely on the precise analysis of transient pulse shapes (moments analysis), maintaining strict mass balance and validating the transport regime is critical. This software achieves this using a dual-factor calibration logic and automated Knudsen validation.


1. The Physical Model

The fundamental equation used to transform the raw mass spectrometer signal $S(t)$ into molar flux $\Phi(t)$ is derived from the requirement that the integral of the signal must equal the known injected molar amount.

The master equation implemented in the code is:

$$ \Phi_X(t) = \underbrace{\left[ S_X(t) - B \right]}_{\text{Net Signal}} \times \underbrace{K_{pulse}}_{\text{Machine State}} \times \underbrace{\alpha_X}_{\text{Chemical Identity}} $$

Nomenclature

Symbol Unit Description
$\Phi_X(t)$ $\text{nmol} \cdot \text{s}^{-1}$ Molar Flux of species $X$ leaving the reactor.
$S_X(t)$ $\text{a.u.}$ Raw Intensity signal from the mass spectrometer at time $t$.
$B$ $\text{a.u.}$ Baseline background signal (vacuum level) to be subtracted.
$K_{pulse}$ $\frac{\text{nmol} \cdot \text{s}^{-1}}{\text{a.u.}}$ Intensity-to-Flux Constant. A dynamic scalar derived from the inert tracer in the current pulse.
$\alpha_X$ Dimensionless Calibration Factor. A static scalar representing the relative detection efficiency of species $X$ vs. the inert reference.

2. Calibration Parameter Definitions

A. Intensity-to-Flux Constant ($K_{pulse}$)

  • Code Variable: config['conv']
  • Nature: Dynamic (Recalculated for every pulse/peak)

Purpose: This factor normalizes the data against the "machine state" at the exact moment of the experiment. It compensates for variables that drift over time, such as detector gain, vacuum chamber pressure, and slight variations in the pulse valve injection size.

Derivation: It is calculated by integrating the signal of the co-pulsed inert tracer (e.g., Argon) where the injected amount is known (calibrated sample loop).

$$ K_{pulse} = \frac{N_{Ar, injected}}{\int_{0}^{\infty} S_{Ar}(t) , dt} $$

B. Calibration Factor ($\alpha_X$)

  • Code Variable: calibration_factor
  • Nature: Static (Determined offline, constant for the species)

Purpose: This is a material constant that corrects for the fact that the mass spectrometer is not equally sensitive to all molecules. It encapsulates the ratio of probabilities for Ionization ($\sigma$), Transmission ($T$), and Fragmentation ($f$).

Derivation: This factor is determined in a separate offline calibration experiment where a binary mixture of known composition (e.g., 50% Ar / 50% Reactant) is pulsed repeatedly.

$$ \alpha_X = \frac{Sensitivity_{Ar}}{Sensitivity_{X}} = \frac{\sigma_{Ar} \cdot T_{Ar} \cdot f_{Ar}}{\sigma_X \cdot T_X \cdot f_X} $$


3. Transport Analysis & Knudsen Criteria

For TAP kinetic models to be valid, the reactor must operate in the Knudsen Diffusion Regime, where transport is dominated by molecule-wall collisions rather than molecule-molecule collisions. This ensures that the gas phase concentration is low enough to ignore homogeneous reactions and that the transport rate is temperature-dependent only.

The software automatically validates this regime by calculating the statistical moments of the inert tracer pulse.

Key Transport Parameters

Parameter Symbol Derivation Description
Zeroth Moment $M_0$ $\int_{0}^{\infty} \Phi(t) , dt$ Represents the total moles eluted in the pulse. Used for mass balance closure.
Peak Flux $F_{peak}$ $\max(\Phi(t))$ The maximum rate of molecules leaving the reactor.
Peak Time $t_p$ $t(\Phi = F_{peak}) - t_{delay}$ The time elapsed between injection and maximum flux.
Normalized Peak Height $H_p$ $F_{peak} / M_0$ A shape factor with units of $s^{-1}$. Indicates the sharpness of the pulse.

The Knudsen Criterion ($H_p \cdot t_p$)

The product of the normalized peak height and the peak time provides a dimensionless shape factor that characterizes the diffusion quality.

$$ \text{Knudsen Product} = H_p \times t_p $$

  • Target Range: $0.25 \le H_p \cdot t_p \le 0.35$
  • Interpretation: A value near 0.3 indicates ideal one-dimensional Knudsen diffusion. Deviations suggest problems such as channeling, dead volumes, or transition-regime flow.

4. Algorithm Implementation

The software processes .tdms files through a strict pipeline to ensure that the resulting flux curves form a valid probability density function for transport analysis.

Step 1: Baseline Subtraction

Before any scaling, the vacuum background must be removed. This is critical because even a small DC offset, when integrated over the long tail of a TAP pulse, will result in significant mass balance errors.

# Code Logic
corrected_raw = raw_vals - baseline_offset

Step 2: Piecewise Time-Domain Conversion

TAP experiments often involve complex sequences (e.g., pump-probe) where different logic applies to different time segments. The code uses boolean masking to apply the specific $K_{pulse}$ and $\alpha_X$ to the correct time window.

# The Master Equation in Code
# eff_conv combines the machine state (conv) and chemical physics (calibration_factor)
eff_conv = config['conv'] * calibration_factor

# Apply conversion only to the specific time window (mask)
flux_column[mask] = corrected_raw[mask] * eff_conv

Step 3: Transport Validation Loop

After conversion, the software runs the validation check on the derived flux curve to ensure the experiment meets the criteria defined in Section 3.

# Code Logic: Validate Knudsen Criteria
Mo_avg = area_under_curve(t_list, f_list)
Hp_val = F_peak / Mo_avg
knudsen_product = Hp_val * t_p_val

if 0.25 <= knudsen_product <= 0.35:
    status = "✓ EXCELLENT"

Clone this wiki locally