## Reproducible research in Seismic Unix

January 29, 2012 Documentation No comments

Open Data/Open Source: Seismic Unix scripts to process a 2D land line by Karl Schleicher is an example of a reproducible paper created with Seismic Unix. It is also a unique example of generating a full processing sequence with a publicly-available dataset, from field data to the final image. Work is under way for generating more examples and for translating the processing flow from SU (suproj) to Madagascar (proj).

## Elusive Goal

Scientists’ Elusive Goal: Reproducing Study Results , an article published on the first page of the Wall Street Journal, describes the crisis of scientific reproducibility in bio-medical research.

Many of the issues described in the article sound familiar.

…Reproducibility is the foundation of all modern research, the standard by which scientific claims are evaluated. In the U.S. alone, biomedical research is a $100-billion-year enterprise. So when published medical findings can’t be validated by others, there are major consequences… …There is also a more insidious and pervasive problem: a preference for positive results… …Some studies can’t be redone for a more prosaic reason: the authors won’t make all their raw data available to rival scientists… Geophysical research does not affect human lives directly but its quality can suffer from non-reproducibility in very much the same way. ## tkvpconvert January 19, 2012 Programs 6 comments tkvpconvert provides a Tkinter GUI (graphical user interface) for vpconvert. It is a silly exercise, which simply demonstrates an ability to generate specialized GUIs for Madagascar scripts and programs. ## Program of the month: sfsmooth January 1, 2012 Programs No comments sfsmooth, one of the most useful Madagascar programs, implements smoothing by triangle filtering. The idea of triangle filtering is explained in Jon Claerbout’s books Processing versus Inversion and Image Estimation by Example. You can find the explanation in the chapter Smoothing with box and triangle. The triangle filter of radius is a correlation of two box filters. In the Z-transform notation, $$T_k(Z) = B_k(1/Z)\,B_k(Z)$$ where $$B_k(Z) = \displaystyle \frac{1}{k}\,\left(1+Z+Z^2+\cdots+Z^k\right) = \frac{1}{k}\,\frac{1-Z^{k+1}}{1-Z}$$ and$k$is the smoothing radius. Triangle filtering is a very efficient operation, because it requires only$N$multiplications for the input of size$N\$.

Triangle filtering serves as a good approximation to more expensive Gaussian filtering. Repeated triangle filtering rapidly approaches Gaussian filtering (a consequence of the central limit theorem). The following example from jsg/shape/smoo demonstrates how repeated application of triangle smoothing turns a triangle filter into a Gaussian filter

The following example from gee/ajt/triangle demonstrated how sfsmooth handles boundary conditions: the energy is reflected from the side in order to preserve the zero-frequency (DC) component of the input signal. Repeated smoothing or smoothing with a very large radius turns every signal into a constant.

In multiple dimensions, triangle smoothing is applied sequentially in different directions, possible with different radii (controlled by rect#= ) parameter. The following example from gee/ajt/mound shows shapes created by 2-D triangle smoothing after one pass and two passes (repeat=2).

Triangle smoothing is theoretically a self-adjoint operator. Numerically, the adjoint and forward operators are different. The action is controlled by the adj= parameter.

For smoothing with a box instead of a triangle, use sfboxsmooth.

For a different approach to smoothing, try sfgaussmooth, which implements smoothing by recursive Gaussian filtering.