Skip to main content

Python implementation of the geNorm algorithm for gene expression.

Project description


A Python package for RNAseq housekeeping (or, reference) normalisation.

Read the docs.

You can:

  • Run the geNorm algorithm [1], which automatically selects reference genes by recursively eliminating genes with high $M$ value.
  • Compute the gene-stability measure $M$ for reference genes in a given set of samples.

Here, $M$ is defined in terms of the average variation in log-ratio expression:

M_j = \sum_{k=1}^n\frac{V_{jk}}{n-1}


A_{jk}^{(i)} = \log_2 \frac{a_{ij}}{a_{jk}}; V_{jk} = \sqrt{\mathrm{Var}(A_{jk})};

with expression $a_{ij}$ referring to gene $j$ in sample $i$.


You can grab geNorm from the Python Package Index:

pip3 install rna-genorm


from pandas import DataFrame
from genorm import m_measure, genorm

# Expression data for three control genes.
counts = DataFrame(
    [[ 1,  2,  1],
    [ 3,  6,  5],
    [ 5, 10,  9],
    [ 3,  6,  5]],
    columns=['gene_a', 'gene_b', 'gene_c'],
    index=[f'sample_{i}' for i in range(1, 5)],

# Compute `M` value for this set of control genes.

# Select top 2 control genes with lowest `M`.
gene_names, m_values = genorm(counts, n_stop=2)


Made by Hylke Donker & Bram van Es and open sourced under the Apache 2 license.


[1]: Vandesompele, Jo, et al. "Accurate normalization of real-time quantitative RT-PCR data by geometric averaging of multiple internal control genes." Genome biology 3.7 (2002): 1-12.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rna-genorm-0.1.0.tar.gz (5.1 kB view hashes)

Uploaded source

Built Distribution

rna_genorm-0.1.0-py3-none-any.whl (4.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page