MatrixQCvis
Workflows
Standard Workflow
Data quality assessment is an integral part of preparatory data analysis to ensure sound biological information retrieval. We present here the MatrixQCvis package, which provides shiny-based interactive visualization of data quality metrics at the per-sample and per-feature level. It is broadly applicable to quantitative omics data types that come in matrix-like format (features x samples). It enables the detection of low-quality samples, drifts, outliers and batch effects in data sets. Visualiz
Steps:
- Samples measured/missing barplot
- Feature missingness histogram
- Feature missingness by condition
- UpSet plot of missingness across conditions
- Normalization
- Batch correction (default to none)
- Transformation (vsn with log2 fallback)
- Imputation (MinDet with minimum value fallback)
- CV comparison across processing stages
- Boxplot/Violin plot of processed values
- Drift Plot
- Distance Matrix Heatmap
library(MatrixQCvis)
library(SummarizedExperiment)
# Assuming 'se' is a SummarizedExperiment object
se_sds <- apply(assay(se), 1, sd, na.rm = TRUE)
se <- se[!is.na(se_sds) & se_sds > 0, ]
# Start the interactive Shiny application
# qc <- shinyQC(se)
Input: A SummarizedExperiment object. Output: An interactive Shiny application that returns a processed SummarizedExperiment object upon exit.
When to Use
- Shiny-based interactive quality control and visualization of quantitative omics datasets (proteomics, metabolomics, transcriptomics).
- Detecting low-quality samples, instrument drifts, outliers, and batch effects.
- Performing simple differential expression analysis using moderated t-tests (
limma) or Wald tests (proDA) directly within the Shiny interface.
When NOT to Use
- For non-matrix-like data or raw sequencing reads (e.g., FASTQ files), use packages like
ShortRead or FastQC.
- For complex multi-factor batch correction or advanced linear modeling outside of interactive exploration, use
limma or sva directly.
Data Requirements
- A
SummarizedExperiment object where rownames(se) are feature names, colnames(se) are sample names, and colnames(se), colnames(assay(se)), and rownames(colData(se)) are all identical.
- Features with standard deviation of 0 should be filtered out before analysis.
Key Parameters
- se: A
SummarizedExperiment object containing the quantitative assay matrix and metadata.
Best Practices
- Filter out features with a standard deviation of 0 using
apply(assay(se), 1, sd, na.rm = TRUE) before launching shinyQC.
- Consult dimension reduction plots (PCA, PCoA, tSNE, UMAP) before performing batch correction, rather than relying solely on value distributions.
- Verify that sample names across
colnames(se), colnames(assay(se)), and rownames(colData(se)) are identical to prevent errors.
Common Pitfalls
- Launching
shinyQC with rownames(se) or colnames(se) set to NULL: Ensure feature and sample names are properly assigned.
- Performing batch correction based solely on boxplots/violin plots: Always inspect dimension reduction plots first to avoid over-correction.
Alternatives
limma for non-interactive batch correction and differential expression.
proDA for intensity-dependent probabilistic modeling of missing values in label-free proteomics.
sva for ComBat-based batch effect correction.
Citations
- Ahlman-Eltze and Anders 2019, proDA (differential abundance analysis)
- Ritchie et al. 2015, limma (moderated t-tests)
References
1---2name: matrixqcvis3description: MatrixQCvis4---56# MatrixQCvis78## Workflows910### Standard Workflow1112Data quality assessment is an integral part of preparatory data analysis to ensure sound biological information retrieval. We present here the MatrixQCvis package, which provides shiny-based interactive visualization of data quality metrics at the per-sample and per-feature level. It is broadly applicable to quantitative omics data types that come in matrix-like format (features x samples). It enables the detection of low-quality samples, drifts, outliers and batch effects in data sets. Visualiz1314**Steps:**151. Samples measured/missing barplot162. Feature missingness histogram173. Feature missingness by condition184. UpSet plot of missingness across conditions195. Normalization206. Batch correction (default to none)217. Transformation (vsn with log2 fallback)228. Imputation (MinDet with minimum value fallback)239. CV comparison across processing stages2410. Boxplot/Violin plot of processed values2511. Drift Plot2612. Distance Matrix Heatmap2728```r29library(MatrixQCvis)30library(SummarizedExperiment)31# Assuming 'se' is a SummarizedExperiment object32se_sds <- apply(assay(se), 1, sd, na.rm = TRUE)33se <- se[!is.na(se_sds) & se_sds > 0, ]34# Start the interactive Shiny application35# qc <- shinyQC(se)36```37Input: A `SummarizedExperiment` object. Output: An interactive Shiny application that returns a processed `SummarizedExperiment` object upon exit.3839## When to Use40- Shiny-based interactive quality control and visualization of quantitative omics datasets (proteomics, metabolomics, transcriptomics).41- Detecting low-quality samples, instrument drifts, outliers, and batch effects.42- Performing simple differential expression analysis using moderated t-tests (`limma`) or Wald tests (`proDA`) directly within the Shiny interface.4344## When NOT to Use45- For non-matrix-like data or raw sequencing reads (e.g., FASTQ files), use packages like `ShortRead` or `FastQC`.46- For complex multi-factor batch correction or advanced linear modeling outside of interactive exploration, use `limma` or `sva` directly.4748## Data Requirements49- A `SummarizedExperiment` object where `rownames(se)` are feature names, `colnames(se)` are sample names, and `colnames(se)`, `colnames(assay(se))`, and `rownames(colData(se))` are all identical.50- Features with standard deviation of 0 should be filtered out before analysis.5152## Key Parameters53- **se**: A `SummarizedExperiment` object containing the quantitative assay matrix and metadata.5455## Best Practices56- Filter out features with a standard deviation of 0 using `apply(assay(se), 1, sd, na.rm = TRUE)` before launching `shinyQC`.57- Consult dimension reduction plots (PCA, PCoA, tSNE, UMAP) before performing batch correction, rather than relying solely on value distributions.58- Verify that sample names across `colnames(se)`, `colnames(assay(se))`, and `rownames(colData(se))` are identical to prevent errors.5960## Common Pitfalls61- Launching `shinyQC` with `rownames(se)` or `colnames(se)` set to `NULL`: Ensure feature and sample names are properly assigned.62- Performing batch correction based solely on boxplots/violin plots: Always inspect dimension reduction plots first to avoid over-correction.6364## Alternatives65- `limma` for non-interactive batch correction and differential expression.66- `proDA` for intensity-dependent probabilistic modeling of missing values in label-free proteomics.67- `sva` for ComBat-based batch effect correction.6869## Citations70- Ahlman-Eltze and Anders 2019, proDA (differential abundance analysis)71- Ritchie et al. 2015, limma (moderated t-tests)7273## References74- Homepage: bioconductor.org/packages/MatrixQCvis75- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/MatrixQCvis/inst/doc/MatrixQCvis.html