Main Page

From Madagascar
Jump to navigation Jump to search

Madagascar is an open-source software package for multidimensional data analysis and reproducible computational experiments. Its mission is to provide

  • a convenient and powerful environment
  • a convenient technology transfer tool

for researchers working with digital image and data processing in geophysics and related fields. Technology developed using the Madagascar project management system is transferred in the form of recorded processing histories, which become "computational recipes" to be verified, exchanged, and modified by users of the system.



Madagascar is a modern package. Started in 2003 and publicly released in 2006, it was developed almost entirely from scratch. Being a relatively new package, it follows modern software engineering practices such as module encapsulation and test-driven development. A rapid development of a project of this scope (more than 1,000 main programs and more than 5,000 tests) would not be possible without standing on the shoulders of giants and learning from the 30 years of previous experience in open packages such as SEPlib and Seismic Unix. We have borrowed and reimplemented functionality and ideas from these other packages.


Madagascar is a test-driven package. Test-driven development is not only an agile software programming practice but also a way of bringing scientific foundation to geophysical research that involves numerical experiments. Bringing reproducibility and peer review, the backbone of any real science, to the field of computational geophysics is the main motivation for Madagascar development. The package consists of two levels: low-level main programs (typically developed in the C programming language and working as data filters) and high-level processing flows (described using the Python programming language) that combine main programs and completely document data processing histories for testing and reproducibility. Experience shows that high-level programming is easily mastered even by beginning students who have no previous programming experience.


Madagascar is an open-source package. It is distributed under the standard GPL open-source license, which places no restriction on the usage and modification of the code. Moreover, access to modifying the source repository is not controlled by one organization but shared equally among different developers. This enables an open collaboration among different groups spread all over the world, in the true spirit of the open-source movement.


Madagascar uses a simple, flexible, and universal data format that can handle very large datasets but is not tied specifically to seismic data or data of any other particular kind. This "regularly sampled" format is borrowed from the traditional SEPlib. A universal data format allows us to share general-purpose data processing tools with scientists from other disciplines such as petroleum engineers working on large-scale reservoir simulations.

Latest News

The major version of Madagascar, stable version 4.0, has been released. The main change is the switch to SCons-4.0 and the added support for deep learning and other enhancements of the Python inter...
2023-03-09 22:27:37
Reproducible papers as Jupyter notebooks
With Jupyter notebooks becoming more ubiquitous in scientific applications, it may help to utilize this format for sharing reproducible results. Here are some examples of old papers from the Madaga...
2022-11-05 22:15:04
Multichannel adaptive deconvolution based on SPEF
An old paper is added to the collection of reproducible documents: Multichannel adaptive deconvolution based on streaming prediction-error filter Deconvolution mainly improves the resolution of sei...
2022-10-20 15:25:52
Continuous time-varying Q-factor estimation method in the time-frequency domain
An old paper is added to the collection of reproducible documents: Continuous time-varying Q-factor estimation method in the time-frequency domain The Q-factor is an important physical parameter fo...
2022-10-14 15:33:32
Program of the month: sfkirmigsr
sfkirmigsr implements 2-D Kirchoff prestack depth migration (PSDM). The following example from tccs/eikods/marm shows an application of sfkirmigsr to imaging synthetic Marmousi data. With cig= flag...
2022-10-12 12:23:11
Madagascar in Google Colab
Google Colaboratory is a popular service for running Jupyter notebooks in a cloud environment using the computational resources provided by Google. As with other cloud services, it is possible to c...
2022-08-23 20:04:08
Amplitude-adjusted plane-wave destruction
An old paper is added to the collection of reproducible documents: Seismic time-lapse image registration using amplitude-adjusted plane-wave destruction We propose a method to efficiently measure t...
2022-08-08 21:11:25