Local copy of documentation.
Dapple: Image Analysis Software for DNA Microarrays
What is it?
Dapple is a program for quantitating spots on a two-color DNA
microarray image. Given a pair of images from a comparative hybridization,
Dapple finds the individual spots on the image, evaluates their qualities,
and quantifies their total fluorescent intensities.
Dapple is designed to work with microarrays on glass. The spot-finding
techniques used are robust to uneven spot sizes and positional deviations
caused by "wobbling" of the arraying robot, as well as image noise and
artifacts. As long as your spots are consistently circular, Dapple has
a good chance of finding them accurately.
Dapple judges the quality of putative spots automatically using a classifier
trained to match the investigator's judgement. In other words, it attempts
to replicate the decisions you would make, based on visual inspection of
the array, about whether to keep or reject each spot. The inferred qualities
of spots are displayed visually, so that the investigator can focus on
evaluating a few potentially erroneous spots rather than having to inspect
the entire array.
More detailed information on Dapple's methods is available in the technical
report UWTR 2000-08-05, available below.
Please cite this report if you use Dapple in your own projects.
Philosophy
Dapple should be used as part of a comprehensive strategy for quantifying
DNA array data. It does not deal with questions of error analysis
and normalization, except insofar as it can identify its own probable spot-finding
mistakes. If you are building an arraying facility, please take the time
to characterize sources of error and quantitative variation in your process!
I hope that you find Dapple to be useful, but I doubt it will be perfectly
adapted to your arraying system. Instead of trying to handle all possible
variations from one lab to another, I have tried to make Dapple as flexible
as possible. In particular, you are free to modify the source code to meet
your needs, or extract pieces to add to your own spot finding program.
I and my users are interested in incorporating your bug fixes and extensions
into the code!
Implementation and Licensing
Dapple is implemented in the C++ language for UNIX-like operating systems.
Development is done on Linux, but the program has been built successfully
on AIX, Solaris, Tru64, and even MacOS X (all using g++). GUI widgets are
provided by the Qt toolkit, while
the FFTW library is used as part of the
image analysis.
The version of Dapple available on this page is distributed under the
GNU General Public License, which is mandated by its use of FFTW. If you
are interested in using Dapple but don't want to be bound by the GPL's
redistribution requirements, UW's Office
of Technology Transfer / Software and Copyright Ventures can work out
alternate licensing terms. It should be possible to do a more liberal "free
for noncommercial use" license provided that someone pays my costs to buy
non-Open Source licenses for Qt and FFTW.
Common Complaints
I can't build Dapple with a non-GNU make!
I don't go out of my way to support non-GNU versions of make, but please
let me know if you encounter a problem. I've tried to remove gratuitous
GNU-isms such as "make -C subdir" from the makefiles.
I can't build Dapple with my local C++ compiler!
I've successfully build Dapple in the past with egcs 1.1.2, gcc 2.95.x,
and gcc 3.0. RedHat's 7.x's beta version of gcc should also work.
If you're using an older C++ compiler that doesn't handle extensive
template usage well, upgrade to a recent version of g++. A recent release
of DEC C++ should be OK on Alpha machines. Also, don't forget that you
must compile Dapple with the same compiler that was used to build
Qt! Otherwise, you may get interesting linking or runtime errors.
Get it!
The latest
version of Dapple is 0.86beta (recommended). Previous versions are
also available in case the newest one doesn't work for you.
Changes in 0.86beta vs 0.85:
-
Support 8-bit TIFF files.
-
Makefile overhaul to simplify configuration of paths and options, and to
avoid gratuitous dependence on GNU-specific features.
-
Fix some minor bugs that prevented building under gcc 3.0.
-
Fix an insidious bug that caused intermittent crashes when loading images!
Changes in 0.85 vs 0.831:
-
sundry bug fixes
-
Correctly read both compressed and uncompressed TIFFs.
-
Reduce peak memory usage, both in the program itself and in the X server.
-
Switch to using integer-valued pixels internally, so that we can easily
switch between 16 and 32 bpp. The pixel size can be set at compile time
by the -DSMALL_PIXELS flag, which is on by default (implying 16 bits of
internal resolution).
-
Attempt to catch common out-of-memory conditions that occur with really
large array images, instead of just crashing.
Changes in 0.831 vs 0.81:
-
support for single-channel images
-
ability to correct misregistration between image channels interactively
prior to grid placement and spot finding
-
support for reading generic 16-bit linear TIFFs as well as GEL files
-
removal of all known source incompatibilities with ANSI standard C/C++
(compiles without warnings using g++ 2.95.2 -Wall -ansi -pedantic, and
with no serious warnings on DEC cxx -Wall -ansi)
-
code cleanup, particularly in image loading, which should make it easier
to add new image formats
-
miscellaneous bug fixes
Note: if you grabbed the extremely short-lived v0.83 source release, please
upgrade. The 16-bit linear TIFF handling was buggy.
Who am I?
I am a graduate student and PhD candidate in the Department
of Computer Science and Engineering at the University
of Washington. I wrote the first version of Dapple as part of my qualifying
exam, lo these many years ago. I occasionally still work on improving Dapple
for my users at the Institute for
Systems Biology, but my main research interests are currently in the
field of accelerating inexact matching algorithms for large sequence comparison
and motif finding.
Jeremy Buhler
(jbuhler@cs.washington.edu)
Last update 7/19/2001