Single Channel Array Normalization (SCAN) is a microarray normalization method to facilitate personalized-medicine workflows. Rather than processing microarray samples as groups, which can introduce biases and present logistical challenges (for example, if groups of samples had to be renormalized repeatedly in personalized-medicine workflows), SCAN normalizes each sample individually by modeling and removing probe- and array-specific background noise using only data from within each array. SCAN can be applied to one-color (Affymetrix) microarrays from earlier generations (e.g. HG-U95 and HG-U133) and later generations (e.g., Gene ST and Exon ST). More about this method can be found in our recent Genomics paper: A single-sample microarray normalization method to facilitate personalized-medicine workflows.

The Universal Probability of expression Codes (UPC) method is an extension of SCAN that produces “probabilistic barcode” values that estimate the probability a given gene is active in a specific sample. This method can be applied not only to one-color microarrays but also to two-color microarrays and RNA-sequencing data. As with SCAN, UPC is applied to individual samples.

SCAN and UPC are currently implemented in the Python programming language and in R. Click here to download the version of SCAN and UPC that have been used in our manuscripts (the included README file explains how to get started).

We have also created new versions of SCAN and UPC that are implemented in a Bioconductor package. Click here for information about how to install and use this package. Note: Due to technological differences and differences in annotation, the Bioconductor version produces slightly different values than the Python version. However, because the Bioconductor version is much easier to install and work with, we have chosen this as our “official” version going forward.

Please contact Stephen Piccolo (stephen.piccolo [at] with any questions about these software packages.