Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Normalisr Offers Robust Modelling of Associations Linearly In Single-cell RNA-seq

Project description

Normalisr is a parameter-free normalization-association two-step inferential framework for scRNA-seq that solves case-control differential expression, co-expression, and pooled CRISPRi scRNA-seq screen under one umbrella of linear association testing. Normalisr addresses sparsity and technical confounding challenges of scRNA-seq with posterior mRNA abundances, nonlinear cellular summary covariates, and mean and variance normalization. All these enable linear association testing to achieve optimal sensitivity, specificity, and speed in all above scenarios.

Normalisr follows the conventional framework of normalization/imputation of scRNA-seq, and aims to recover the true, biological, but hidden expression levels which any analyses may then operate upon. Then, linear association testing provides a unified inferential framework with numerous advantages: (i) exact P-value estimation without permutation, (ii) native removal of covariates as fixed effects, (iii) non-parametric robustness, (iv) unbeatable time and memory complexities, and (v) extension potentials such as variations in genetic relatedness.

Normalisr is written in Python3 and provides a command-line and a python functional interface. You can read more about Normalisr from our preprint (See References).


Normalisr is on PyPI and can be installed with pip: pip install normalisr. You can also install Normalisr from github: pip install git+ Make sure you have added Normalisr’s install path into PATH environment before using the command-line interface (See FAQ). Normalisr’s installation should take less than a minute.

There are more advanced installation methods but if you want that, most likely you already know how to do it ;). If not, give me a shout (See Contact).


Normalisr provides a command-line and a python functional interface below. You can use the examples provided below to guide yourself through Normalisr’s use. Sphinx-based documentation is underway.

  • Commmand-line interface

    You can run Normalisr by typing normalisr on command-line. Normalisr uses submodules for different analysis steps. Type normalisr or normalisr -h for general help, and for example normalisr de -h for help on submodule ‘de’ of differential expression.

    Normalisr uses tsv (tab separated values) file format for input and output matrices, and text file for row and column names, such as cells and genes, one per line. For initial input, Normalisr also accepts the sparse mtx format (Cell Ranger output) for raw read count matrix. Gzipped input/output files are automatically recognized if file name suffix ‘.gz’ is present.

  • Python functional interface

    Normalisr’s python functional interface is more flexible than command-line, but requires knowledge of python programming. Documentation of any function can be obtained with ? in ipython or jupyter notebook, such as:

    import normalisr.normalisr as norm

    The example jupyter notebooks also illustrate the scope of functions Normalisr provides.


Documentations are available as html and pdf.

Examples and pipelines

You can find several examples in the ‘examples’ folder, to cover all functions Normalisr currently provides. The example datasets have been scaled down to run on a 16GB-memory personal computer. Although they only serve as demonstrations of work here, the pipelines should be transferable to a full-scale, different dataset. Since Normalisr is non-parametric, the only adjustable parameters are for quality control and final cutoffs of differential or co-expression. You can change down-sampling parameters in the examples to run the full datasets on a larger computer.

You can find more details in the respective examples.


We look forward to your feedbacks or questions of any kind.


Please find the currently available materials below:

  • Abstract submitted to ICML 2020 Workshop on Computational Biology

Contact me if you would like to request more details.


  • What does Normalisr stand for?
    Normalisr Offers Robust Modelling of Associations Linearly In Single-cell RNA-seq. Yes, it’s a recursive acronym. See GNU and pip.
  • I installed Normalisr but typing normalisr says ‘command not found’.
  • How do I use a specific python version for Normalisr’s command-line interface?
    You can always use the python command to run Normalisr, such as python3 -m normalisr to replace command normalisr. You can also use a specific path or version for python, such as python3.7 -m normalisr or /usr/bin/python3.7 -m normalisr. Make sure you have installed Normalisr for this python version.
  • Why don’t the examples work?
    Please make sure you followed every step in the of the respective example folder with Internet connection, and then submit an issue report detailing at which executed line the error occurred with input and output.
  • Does Normalisr run on Windows?
    I have not tested Normalisr on Windows. However, it is purely in python and should be able to function properly.

Project details

Download files

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

Files for normalisr, version 0.4.2
Filename, size File type Python version Upload date Hashes
Filename, size normalisr-0.4.2-py3-none-any.whl (38.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size normalisr-0.4.2.tar.gz (32.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page