## Opinion poll

A post-meeting survey after the 2012 Madagascar School in Austin showed an overwhelmingly positive response. 100% of those who responded to the survey said that they would attend events like that in the future (one person said “Sure. If it takes part in my home country.“, another one added “I think is the best open source project out there. I think that is not because of the programs (which are very good) themselves but because of the community and reproducibility framework.“) and would recommend it to their colleagues.

One point of the discussion was selecting a topic for future workshops. 44% were in favor of Seismic Interpretation. 56% were in favor of Seismic Field Data Processing. Please read the description of possible workshop topics and, if you are a member of the Madagascar LinkedIn group, vote in the opinion poll.

## How is regression testing done in Madagascar?

September 22, 2012 FAQ No comments

Testing for reproducibility is an important principle behind Madagascar’s design. It works on several levels.

1. Inside a project directory (with SConstruct file that contains from rsf.proj import *), run
scons lock

to create Result files (figures) and to copy them to a different location (specified by RSFFIGS or $RSFROOT/share/madagascar/figs by default). Papers included with Madagascar (under$RSFSRC/book) have their result figures saved in a repository.
To come back and test if the results are still reproducible, run

scons test

or

scons figurename.test

This command performs an intelligent comparison of figures using Joe Dellinger’s sfvplotdiff and reports an error if the figures are different. In the case of an error, you can run

scons figurename.flip

to flip between the new version of the figure and the old version and on the screen and to compare them visually. Based on that comparison, you can either “lock” the new version with

scons figurename.lock

or debug the error that caused the difference and try to fix it.

2. To test all projects where a particular program, say sfspike, is used, run
cd $RSFSRC/book; scons sfspike.test This is useful for regression testing for changes in programs that may cause reproducibility failures. You can also run cd$RSFSRC/book; scons test

to test all projects and all Madagascar programs. By default, testing is limited to projects that use only publicly available data and less that 1 Mb of disk space. This behavior can be changes by giving all=y or size= parameters to scons test.

3. A collection of scripts developed by Jim Jennings and explained on the Automatic Testing page performs fine-grain testing with extended diagnostics.

## Program of the month: sfiwarp

September 3, 2012 Programs No comments

sfiwarp performs mapping between different coordinates.

If you have sampled functions $f(x)$ and $y(x)$, sfiwarp with inv=y (the default) finds sampled $f(y)$. If inv=n, sfiwarp takes $f(y)$ and $y(x)$ and finds $f(x)$. In both cases, the sampled $y(x)$ function is supplied in a file specified by warp= parameter. The following example from milano/taupvel/cmp shows a seismic taup-p gather flattening by predictive painting and time warping.

Coordinate mapping is a fundamental data-transformation operation, which finds many applications. The term warping comes from medical imaging. See, for example,

• Wolberg, G., 1990, Digital image warping: IEEE Computer Society Press.
• W. Burnett and S. Fomel, 2009, Moveout analysis by time-warping: 79th Annual International Meeting, SEG, 3710-3714.

The algorithm used in sfiwarp is B-spline interpolation and inverse spline interpolation. If forward warping (inv=n) is $\mathbf{f}_x = \mathbf{B}\,\mathbf{f}_y$, then the inverse transformation (inv=y) is given by the regularized least-squares inverse
$$\mathbf{f}_y = \left(\mathbf{B}^T\,\mathbf{B} + \epsilon^2\,\mathbf{D}\right)^{-1}\,\mathbf{B}^T\,\mathbf{f}_x\;,$$ where $\mathbf{D}$ is the derivative operator. The $\epsilon$ parameter is supplied by eps=. The sampling in $y$ is supplied by n1=, d1=, o1= parameters.

For 2-D and 3-D versions, try sfiwarp2 and sfiwarp3.