Written by Dan Andrews, updates by Chris Barnes, Nelo Onyiah


This program implements loess normalization for the correction of wave like correlations in signal intensities across the genome. The method is described in the paper:

Breaking the waves: improved detection of copy number variation from microarray-based comparative genomic hybridization.
Marioni JC, Thorne NP, Valsesia A, Fitzgerald T, Redon R, Fiegler H, Andrews TD, Stranger BE, Lynch AG, Dermitzakis ET, Carter NP, Tavaré S, Hurles ME.
Genome Biology, 2007;8(10):R228 pubmed

The largest part of this application is comprised of the loess normalisation code of Cleveland, Grosse, and Shyu obtained from: http://netlib.bell-labs.com/netlib/a/dloess.gz


1) To check out the package use anonymous CVS access:

cvs -z3 -d:pserver:anonymous@cnv-tools.cvs.sourceforge.net:/cvsroot/cnv-tools co -P WaveNorm

2) If your system has BLAS installed change into the WaveNorm directory and type make

cd WaveNorm

This should build the application WaveNorm.

If your system does not have BLAS installed then you will need to download the BLAS libraries from here and install them on your system. You will then need to edit the Makefile accordingly to point the BLAS variable to the correct directory.


Invoking WaveNorm without any arguments, or with the -h flag should give you a list of options. Eg

./WaveNorm -h

To run on the test data set, which consists of one individuals LRR values from chromosome 21q on the Illumina 370 platform, do:

./WaveNorm -f test/test_21q.dat -c 21 -r 3 -w 2000000 -l 50 -t 1.0 > results.dat


Advanced usage

The loess tools within WaveNorm can be used inside your own C++ code. You need to include the header file WaveNorm.hpp and build against libWaveNorm.a. Look at the header file WaveNorm.hpp for the functions available and WaveNormApp.cpp for how to call them.