Spectral Data Normalization (TIC)
License: noncommercial — confirm your use is a permitted (noncommercial) purpose before applying; commercial use requires a separate license (see metadata.tool_license).
Summary
Total Ion Current (TIC) normalization corrects for systematic variations in ion signal intensity across mass spectrometry imaging or LC-MS samples by dividing each spectrum's m/z intensities by the sum of all intensities in that spectrum. This preprocessing step is essential before peak detection or quantitative comparison, especially when acquisition conditions or sample loading vary.
When to use
Apply TIC normalization when you have raw, unprocessed mass spectrometry data (Cardinal objects or imaging matrices with 10,000+ m/z features and 1,000+ spectra) where signal intensity varies across spatial locations or samples due to instrumental drift, uneven sample preparation, or variable ionization efficiency. Use it as a prerequisite step before peakProcess() or statistical analysis that assumes comparable signal scales across observations.
When NOT to use
- Data already normalized or pre-processed by vendor software (check QC plots for intensity distributions across samples)
- Comparative analysis where absolute intensity (e.g., molar concentration estimates) must be preserved across replicates
- Spectra with extreme outliers or near-zero total ion current that would amplify noise after division
Inputs
- Cardinal object with raw m/z intensities (unprocessed imaging matrix or LC-MS data)
- Mass spectra matrix (n_spectra × n_mz_features) with absolute ion counts
- Optional: pre-summarized feature matrix from Cardinal::summarizeFeatures()
Outputs
- TIC-normalized Cardinal object or matrix (same dimensions, relative intensities 0–1)
- Spectra with unit-scaled ion current per observation
- Prepared input for peakProcess() or statistical comparison
How to apply
Load the unprocessed spectral data into Cardinal (or equivalent MSI framework) and apply TIC normalization before any downstream processing. Divide each spectrum's intensity vector by its total ion current (sum of all m/z intensities in that spectrum), converting raw counts to relative proportions. This is typically performed on the full m/z range (e.g., 150–1000 Da) after optional mean-aggregation summarization of redundant features, and before peak detection with SNR thresholding or spatial segmentation. The normalized data becomes the input to peakProcess() with parameters such as SNR threshold=3, sampleSize=0.1, and tolerance=0.5 m/z. Verify normalization by confirming that each spectrum's summed intensity is now 1.0 (or that relative intensities fall within 0–1 range).
Related tools
- Cardinal (Load, store, and apply TIC normalization to mass spectrometry imaging objects; provides normalization methods and integration with peakProcess()) — https://github.com/Vitek-Lab/Cardinal3-vignettes
- SpaMTP (High-level R interface for spatial metabolomics preprocessing, including normalization workflows before annotation and statistical analysis) — https://github.com/GenomicsMachineLearning/SpaMTP
- R (Programming environment for normalization implementation (arithmetic operations on intensity matrices))
Examples
library(Cardinal); pig206 <- readRDS('pig206_raw.rds'); pig206_norm <- normalize(pig206, method='tic'); peaks <- peakProcess(pig206_norm, SNR=3, sampleSize=0.1, tolerance=0.5)
Evaluation signals
- Each spectrum's summed intensity post-normalization equals 1.0 (or lies within expected normalized range [0, 1]) — verify by sum(spectrum) ≈ 1.0 for random sample of spectra
- Intensity distribution (histogram or violin plot) across samples becomes more uniform; coefficient of variation in median intensity per spectrum decreases
- Peak detection (peakProcess) yields expected number of cleaned peaks (e.g., 687 peaks in PIGII_206 pig fetus dataset) consistent with literature or positive control
- No negative values in normalized data; no spectra with NaN or Inf after division (check for near-zero or zero total ion current edge cases)
- Spatial visualizations (ImageMZPlot, ImageDimPlot) show consistent feature representation across tissue regions without systematic intensity gradients attributable to normalization artifacts
Limitations
- TIC normalization assumes all m/z features carry biological signal; presence of dominant contaminants or chemical noise can distort normalization by inflating their relative abundance
- Sensitivity to spectra with extremely low or zero total ion current; such spectra may produce spurious high relative intensities after normalization and should be filtered or excluded pre-normalization
- Does not correct for m/z-dependent ionization efficiency or detector saturation; complementary methods (e.g., rank normalization, quantile normalization, or internal standard correction) may be needed for quantitative metabolite comparison
- Unsuitable for rare or low-abundance metabolites in complex mixtures where TIC is dominated by matrix components; consider robust normalization alternatives or m/z-specific weighting
Evidence
- [other] Apply TIC normalization followed by peakProcess with SNR threshold=3, sampleSize=0.1, tolerance=0.5 mz to generate 687 cleaned peaks.: "Apply TIC normalization followed by peakProcess with SNR threshold=3, sampleSize=0.1, tolerance=0.5 mz to generate 687 cleaned peaks."
- [other] Load the unprocessed pig206 Cardinal object from Zenodo (10,200 m/z features, 4,959 spectra, m/z range 150–1000). Summarize features using mean aggregation with Cardinal's summarizeFeatures().: "Load the unprocessed pig206 Cardinal object from Zenodo (10,200 m/z features, 4,959 spectra, m/z range 150–1000). Summarize features using mean aggregation with Cardinal's summarizeFeatures()."
- [readme] Cardinal inherits functionalities from two well established R packages (Cardinal and Seurat) to present a user-friendly platform for integrative spatial-omics analysis.: "SpaMTP inherits functionalities from two well established R packages (Cardinal and Seurat) to present a user-friendly platform for integrative spatial-omics analysis."
1---2name: spectral-data-normalization-tic-23description: Use when apply TIC normalization when you have raw, unprocessed mass spectrometry data (Cardinal objects or imaging matrices with 10,000+ m/z features and 1,000+ spectra) where signal intensity varies across spatial locations or samples due to instrumental drift, uneven sample preparation, or.4license: CC-BY-4.05---67# Spectral Data Normalization (TIC)89> **License: noncommercial** — confirm your use is a permitted (noncommercial) purpose before applying; commercial use requires a separate license (see `metadata.tool_license`). <!-- asb-license-banner -->10## Summary1112Total Ion Current (TIC) normalization corrects for systematic variations in ion signal intensity across mass spectrometry imaging or LC-MS samples by dividing each spectrum's m/z intensities by the sum of all intensities in that spectrum. This preprocessing step is essential before peak detection or quantitative comparison, especially when acquisition conditions or sample loading vary.1314## When to use1516Apply TIC normalization when you have raw, unprocessed mass spectrometry data (Cardinal objects or imaging matrices with 10,000+ m/z features and 1,000+ spectra) where signal intensity varies across spatial locations or samples due to instrumental drift, uneven sample preparation, or variable ionization efficiency. Use it as a prerequisite step before peakProcess() or statistical analysis that assumes comparable signal scales across observations.1718## When NOT to use1920- Data already normalized or pre-processed by vendor software (check QC plots for intensity distributions across samples)21- Comparative analysis where absolute intensity (e.g., molar concentration estimates) must be preserved across replicates22- Spectra with extreme outliers or near-zero total ion current that would amplify noise after division2324## Inputs2526- Cardinal object with raw m/z intensities (unprocessed imaging matrix or LC-MS data)27- Mass spectra matrix (n_spectra × n_mz_features) with absolute ion counts28- Optional: pre-summarized feature matrix from Cardinal::summarizeFeatures()2930## Outputs3132- TIC-normalized Cardinal object or matrix (same dimensions, relative intensities 0–1)33- Spectra with unit-scaled ion current per observation34- Prepared input for peakProcess() or statistical comparison3536## How to apply3738Load the unprocessed spectral data into Cardinal (or equivalent MSI framework) and apply TIC normalization before any downstream processing. Divide each spectrum's intensity vector by its total ion current (sum of all m/z intensities in that spectrum), converting raw counts to relative proportions. This is typically performed on the full m/z range (e.g., 150–1000 Da) after optional mean-aggregation summarization of redundant features, and before peak detection with SNR thresholding or spatial segmentation. The normalized data becomes the input to peakProcess() with parameters such as SNR threshold=3, sampleSize=0.1, and tolerance=0.5 m/z. Verify normalization by confirming that each spectrum's summed intensity is now 1.0 (or that relative intensities fall within 0–1 range).3940## Related tools4142- **Cardinal** (Load, store, and apply TIC normalization to mass spectrometry imaging objects; provides normalization methods and integration with peakProcess()) — https://github.com/Vitek-Lab/Cardinal3-vignettes43- **SpaMTP** (High-level R interface for spatial metabolomics preprocessing, including normalization workflows before annotation and statistical analysis) — https://github.com/GenomicsMachineLearning/SpaMTP44- **R** (Programming environment for normalization implementation (arithmetic operations on intensity matrices))4546## Examples4748```49library(Cardinal); pig206 <- readRDS('pig206_raw.rds'); pig206_norm <- normalize(pig206, method='tic'); peaks <- peakProcess(pig206_norm, SNR=3, sampleSize=0.1, tolerance=0.5)50```5152## Evaluation signals5354- Each spectrum's summed intensity post-normalization equals 1.0 (or lies within expected normalized range [0, 1]) — verify by sum(spectrum) ≈ 1.0 for random sample of spectra55- Intensity distribution (histogram or violin plot) across samples becomes more uniform; coefficient of variation in median intensity per spectrum decreases56- Peak detection (peakProcess) yields expected number of cleaned peaks (e.g., 687 peaks in PIGII_206 pig fetus dataset) consistent with literature or positive control57- No negative values in normalized data; no spectra with NaN or Inf after division (check for near-zero or zero total ion current edge cases)58- Spatial visualizations (ImageMZPlot, ImageDimPlot) show consistent feature representation across tissue regions without systematic intensity gradients attributable to normalization artifacts5960## Limitations6162- TIC normalization assumes all m/z features carry biological signal; presence of dominant contaminants or chemical noise can distort normalization by inflating their relative abundance63- Sensitivity to spectra with extremely low or zero total ion current; such spectra may produce spurious high relative intensities after normalization and should be filtered or excluded pre-normalization64- Does not correct for m/z-dependent ionization efficiency or detector saturation; complementary methods (e.g., rank normalization, quantile normalization, or internal standard correction) may be needed for quantitative metabolite comparison65- Unsuitable for rare or low-abundance metabolites in complex mixtures where TIC is dominated by matrix components; consider robust normalization alternatives or m/z-specific weighting6667## Evidence6869- [other] Apply TIC normalization followed by peakProcess with SNR threshold=3, sampleSize=0.1, tolerance=0.5 mz to generate 687 cleaned peaks.: "Apply TIC normalization followed by peakProcess with SNR threshold=3, sampleSize=0.1, tolerance=0.5 mz to generate 687 cleaned peaks."70- [other] Load the unprocessed pig206 Cardinal object from Zenodo (10,200 m/z features, 4,959 spectra, m/z range 150–1000). Summarize features using mean aggregation with Cardinal's summarizeFeatures().: "Load the unprocessed pig206 Cardinal object from Zenodo (10,200 m/z features, 4,959 spectra, m/z range 150–1000). Summarize features using mean aggregation with Cardinal's summarizeFeatures()."71- [readme] Cardinal inherits functionalities from two well established R packages (Cardinal and Seurat) to present a user-friendly platform for integrative spatial-omics analysis.: "SpaMTP inherits functionalities from two well established R packages (Cardinal and Seurat) to present a user-friendly platform for integrative spatial-omics analysis."