agentsclimarketplace

Gene expression matrix normalization

Skill HolobiomicsLab/asb-skill-collections/collections/transcriptomics/v1/skills/gene-expression-matrix-normalization

Use when when you have raw or unnormalized gene expression data from microarray experiments (e.From its SKILL.md

Install
npx -y skills add HolobiomicsLab/asb-skill-collections --skill gene-expression-matrix-normalization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.0 KB, 981 tokens by cl100k_base, as published. Nobody here has run it

gene-expression-matrix-normalization

Summary

Normalize microarray gene expression matrices using log transformation and quantile normalization to remove technical variation and enable consistent downstream pathway enrichment analysis. This skill prepares raw expression data for reliable GSEA calculations by standardizing distributions across samples.

When to use

When you have raw or unnormalized gene expression data from microarray experiments (e.g., GSE200250 Th2 time-course samples) that will be used for gene set enrichment analysis or pathway scoring, and you need to remove technical batch effects and ensure comparability across samples before calculating enrichment statistics.

When NOT to use

  • Expression data is already log-transformed and quantile-normalized (e.g., from a processed GEO dataset marked as 'normalized')
  • Input is pre-ranked gene statistics (log fold-change or t-statistic vectors) rather than a raw expression matrix—use preranked GSEA instead
  • Single-sample analysis where cross-sample normalization is not applicable

Inputs

  • ExpressionSet object from GEO (containing raw or background-corrected intensity values)
  • Numeric expression matrix with genes as rows and samples as columns

Outputs

  • Log2-transformed and quantile-normalized expression matrix
  • Normalized ExpressionSet object with standardized intensities across samples

How to apply

Load the ExpressionSet object from GEO using GEOquery::getGEO(), extract expression values with exprs(), apply log2 transformation to stabilize variance, then apply quantile normalization using limma::normalizeBetweenArrays() with method='quantile'. This two-step approach (log transform followed by quantile normalization) ensures that the distribution of expression values is comparable across all samples, which is critical for downstream GSEA/GESECA analysis where enrichment scores depend on consistent gene-level rankings. Verify that normalized values fall within expected ranges (typically log2-transformed intensities between 0–16 for microarray data) and that sample distributions are visually aligned in density plots.

Related tools

  • GEOquery (Load GSE microarray data and extract ExpressionSet objects from NCBI GEO)
  • limma (Apply quantile normalization via normalizeBetweenArrays() with method='quantile')
  • fgsea (Downstream tool that requires normalized expression matrices or ranked statistics for GESECA pathway analysis) — https://github.com/ctlab/fgsea

Examples

library(limma); library(GEOquery); gse <- getGEO('GSE200250', AnnotGPL=TRUE); es <- gse[[1]]; exprs(es) <- normalizeBetweenArrays(log2(exprs(es)), method='quantile')

Evaluation signals

  • Normalized expression values are log2-transformed (typically in the range 0–16 for microarray microarray intensities after background correction)
  • Quantile–quantile plots show aligned distributions across all samples after normalization
  • Mean and variance of expression distributions are consistent across samples (verifiable via boxplots or density plots grouped by sample)
  • Downstream GESECA enrichment scores for known pathway activations (e.g., HALLMARK_E2F_TARGETS, HALLMARK_HYPOXIA) fall within published ranges and show expected temporal activation patterns
  • Duplicated genes and genes with missing or '///' identifiers have been removed before GSEA to avoid rank ties and invalid gene symbols

Limitations

  • Quantile normalization assumes that the majority of genes are not differentially expressed across samples; it may not be appropriate for highly polarized comparisons (e.g., tumor vs. normal tissue with large-scale expression shifts)
  • Log transformation requires positive expression values; background correction must be applied first to avoid undefined log values
  • Quantile normalization can obscure global expression changes if a large fraction of genes are genuinely dysregulated; validation against spike-in controls or housekeeping genes is recommended
  • The method is optimized for microarray data; RNA-seq data typically requires different normalization strategies (e.g., TMM, DESeq2 variance stabilization)

Evidence

  • [methods] log-transform gene expression, then apply quantile normalization: "Extract and log-transform gene expression, then apply quantile normalization using normalizeBetweenArrays from limma with method='quantile'."
  • [methods] quantile normalization enables consistent GSEA P-values: "exprs(es) <- normalizeBetweenArrays(log2(exprs(es)), method="quantile")"
  • [methods] GESECA requires filtered and normalized expression matrices: "Run geseca on the filtered expression matrix with minSize=15 and maxSize=500, using default centering."
  • [intro] fgsea enables reproducible pathway enrichment with normalized data: "fgsea enables fast and accurate calculation of arbitrarily low GSEA P-values for gene set collections, supporting reproducible pathway enrichment analysis."

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.