``Madagascar'' is a multi-layered software package
(Fig. 1). Users can thus use it in different ways:
command line: ``Madagascar'' is first of all a
collection of command line programs. Most programs act as filters on
input data and can be chained in a Unix pipeline, e.g.
sfspike n1=200 n2=50 | sfnoise rep=y >noise.rsf
Although these programs mainly focus at this point on geophysical
applications, users can use the API (application programmer's
interface) for writing their own software to manipulate Regularly
Sampled Format (RSF) files, ``Madagascar'' file format. The main
software language of ``Madagascar'' is C. Interfaces to other
languages (C++, Fortran-77, Fortran-90, Python) are also provided.
processing flows: ``Madagascar'' is also an environment
for reproducible numerical experiments in a very broad sense. These
numerical experiments (or ``computational recipes'') can be done not
only using ``Madagascar'' command line programs but also Matlab,
Mathematica, Python, or other seismic packages (e.g. SEP, Seismic
Unix). We adopted SCons for this part as we shall demonstrate later.
documentation: the most upper layer of ``Madagascar''
and maybe the most critical for reproducible research is
documentation. ``Madagascar'' establishes a direct link between the
figures of a paper or a report and the codes that were used to
generate them. This layer uses SCons in combination with LATEX to
generate PDF, HTML, and MediaWiki files real easy and undoubtly
makes ``Madagascar'' an environment of choice for technology
transfer, report, thesis, and peer-reviewed publication writing.
Reproducible computational experiments