IWAVE

June 7, 2012 Systems No comments

A major enhancement of Madagascar is the recent addition of IWAVE, a wave modeling package from Bill Symes and The Rice Inversion Project (TRIP). IWAVE includes includes a variable-density acoustics modeling application, and the initial release of an isotropic elastic modeling code, both with PML boundary conditions, parallelization over loops and tasks, and other features. Its authors are Igor S. Terentyev, Tatyana Vdovina, William W. Symes, Xin Wang, and Dong Sun. IWAVE was used as a benchmarking and QC tool by SEAM, the SEG modeling project.

You can see a simple example of using IWAVE with Madagascar in this reproducible paper.

Program of the month: sfdip

June 2, 2012 Programs No comments

sfdip estimates a local slope (dip) using the plane-wave destruction algorithm.

The dip is measured in time samples. If $\alpha$ is the dip angle, then the output of sfdip corresponds to the dimensionless quantity $p=\tan{\alpha}$.

The following example from jsg/flat/flat shows an input synthetic dataset and an estimated dip field

When applied to 3-D data, sfdip outputs a 4-D file with n4=2 and two dips (inline and crossline). To compute only the inline dip, use n4=0. To compute only the crossline dip, use n4=1. The following example from sep/plane/qint shows an input synthetic 3-D dataset and the two dip components calculated from it.

The algorithm consists of a number of non-linear Gauss-Newton iterations (specified by niter=) with a number of linear CG-shaping iterations (specified by liter=) inside each non-linear cycle. The convergence depends on the initial dip values, which can be specified either as constants (p0= and q0=) or as auxiliary input files (idip= and xdip=). If it is necessary to constrain the range of dip values, it can be controlled by specifying minimum or maximum parameters (pmin=, pmax= and qmin=, qmax=). The smoothness of the dip is assured by shaping regularization and controled by the smoothing radii rect1=, rect2=, rect3=.

With default parameters, the dip estimate is accurate only up to 45 degrees. To estimate steeper (aliased) dips, increase the order= parameter. The order of the filter corresponds to the maximum dip. Alternatively, one can use the technique of filter stretching (interlacing), explained by Claerbout; the stretching parameters are nj1= and nj2=. The following examples from sep/pwd/alias show aliased data interpolation using (a) order=12 (b) order=3 nj1=4.

For a faster version, with only one non-linear iteration but with fewer options, try sffdip. To estimate two interfering dips, try sftwodip2. To estimate a number of constant dips, try sfdips.

10 previous programs of the month

Sage interview

May 30, 2012 Links No comments

There are not too many examples of sucessful open-source projects in scientific software. One of them is Sage, a mathematical software system aimed at creating a viable free open-source alternative to Magma, Maple, Mathematica and Matlab.

In a recent interview, the developers of Sage gave the following answer to the question Why do you consider free/libre open source software important for the advancement of your field?

[…] When we contribute to mathematics, it is important to contribute both the results and the methods. When software plays an essential role in research, this is a valuable part of the public contribution. If other mathematicians can’t learn how it works, modify it, and use it for new purposes, then there is a serious loss of value.

[…] Second topic: Unifying the ecosystem. There are several different commercial software tools. Software libraries developed by one research group based on one of them is unusable by other research groups. Students and universities don’t have the money to finance all of this. A unified ecosystem also has the advantage that anyone can better understand the code written by others.

[…] Third topic: Quality of research. If you consider including your code directly into the code of the whole Sage project, it will be part of it for the foreseeable future. This means, the code must meet a certain level of quality and there need to be a set of tests for each part of the contributed code. In preparation for each new release of Sage, it is made certain, that all those tests pass on all supported systems. Therefore, your code continues to be functional and probably actively maintained, even though you have stopped working on it. This is very different from the following situation, where you publish a half-working code once on your private website, and stop maintaining it.

[…] Fourth topic: Accessibility (Cost). We want the code we write to be usable by students or researchers without access to large department budgets. People who can’t (or don’t want to) afford an expensive software license are restricted from using work developed for that software. This is a restriction on users and on developers. Also, a related example are 3rd world and emerging countries. Just think about the importance of the freely accessible Wikipedia for education via projects like e.g. OLPC. The very same holds true for higher education and in our case for the accessibility to advanced mathematical software.

Naturally, some of this discussion applies to Madagascar as well.

Sage Madagascar
First public release 2005 2006
Main language Python C
License GPL GPL
Lines of code (per ohloh.net) nearly 500,000 more than 500,000
Contributors (per ohloh.net) more than 500 more than 50
User mailing list more than 2,000 (sage-support) more than 200 (RSF-user)
Developer mailing list nearly 1,500 (sage-devel) more than 70 (RSF-devel)

For integration of Madagascar and Sage, one can use the Python interface.

Summer meetings

May 16, 2012 Celebration No comments

The following Madagascar-related meetings are taking place this summer. Workshop 16 at the 2012 EAGE Annul Meeting in Copenhagen, Denmark, is titled Open-source E+P Software – Six Years Later and scheduled on Friday, June 8. The title refers to an analogous workshop in Vienna in 2006, where Madagascar was first publicly announced. The workshop is organized by Joseph Dellinger, Karl Schleicher, Helene Huck, and Tariq Alkhalifah and features an extensive program with multiple presentations. This year’s Madagascar School and Workshop will take place in Austin, Texas, on Friday-Saturday July 20-21. Please reserve the date and wait for the announcement of the program and registration details.

Nonhyperbolic CRS

May 3, 2012 Documentation No comments

A new paper is added to the collection of reproducible documents:
Non-hyperbolic common reflection surface

Lowrank wave extrapolation

May 3, 2012 Documentation No comments

A new paper is added to the collection of reproducible documents:
Seismic wave extrapolation using lowrank symbol approximation

Program of the month: sfderiv

May 1, 2012 Programs 14 comments

sfderiv applies the first derivative filter.

The algorithm implemented in this program is described in the paper

Pei, S.-C., and P.-H. Wang, 2001, Closed-form design of maximally flat FIR Hilbert transformers, differentiators, and fractional delayers by power series expansion: IEEE Trans. on Circuits and Systems, v. 48, No. 4, 389-398.

It is based on the Taylor expansion of the inverse sine function
$$\arcsin{x} = \displaystyle \sum_{n=0}^{\infty} \frac{(2n)!}{4^n\,(n!)^2\,(2n+1)}\,x^{2n+1}$$
which turns into an expansion of the ideal derivative filter into a chain of digital filters. The order= parameter controls the order of the expansion and the accuracy-efficiency trade-off. The following example from rsf/rsf/sfderiv shows the frequency responses and the impulse responses for differentiators of different orders

An alternative is sfigrad, which implements a simple first-order derivative. igrad is more efficient and adequate when computing derivatives of smooth functions.

Previous programs of the month

Performance evaluation of SU and Madagascar

May 1, 2012 Links No comments

The paper Performance Evaluation of Open Source Seismic Data Processing Packages by Izzatdin A. Aziz, Andrzej M. Goscinski, and Michael M. Hobbs from Deakin University was presented at the 11th International Conference on Algorithms and Architectures for Parallel Processing (ICA3PP 2011).

“The goal in this paper was to demonstrate the capability of open source packages, SU and Madagascar, to execute a sequence of seismic functions representing the actual industrial work process. We succeeded in this by conducting two sets of tasks. First, the investigation of the problem, whether or not open source seismic data processing packages can be executed using the same set of seismic data through data format conversions. Second, whether or not they can achieve reasonable performance and speedup when execute parallel seismic functions on a HPC cluster.”

madagascar-1.3 released

April 22, 2012 Celebration No comments

The 1.3 stable release features 7 new reproducible papers, multiple bug fixes, and a tutorial by Jeff Godwin.

According to the SourceForge statistics, the previous 1.2 stable release has been downloaded nearly 4,000 times, with more than 1,000 downloads in China. During the same period, there have been 41,028 read transactions and 994 write transactions in the Subversion repository. Ohloh.net characterizes Madagascar by a “mature, well-established codebase” and a “large, active development team“, the estimated project cost is $7,4 million.

Program of the month: sfgrey3

April 1, 2012 Programs No comments

sfgrey3 generates “cube” plots from 3-D data. A cube plot displays sections from a 3-D cube as faces of the cube.

Some of the options specific to this kind of display are:

  • flat= The flat parameter tells sfgrey3 whether to display the cube as a flat image or in a 3-D projection. The default is flat=y. The following example from bei/fld/cube displays the same input data with both options:

  • frame1=, frame2=, frame3= The frame parameters select the slices from the cube to be displayed in the plot. The default is to take the first slice from the vertical and the out-of-plane axis (frame1=0 frame3=0) and the last slice from the horizontal axis (frame2=n2-1). In the following example from geo384w/hw3/gulf, the data size is n1=1000 n2=250 n3=48 and the frame parameters are frame1=500 frame2=160 frame3=10:

  • point1=, point2= The point1= and point2= parameters control the aspect ratio of the cube by specifying the ratio (from 0 and 1) that the front face of the cube takes from the plot in the vertical and the horizontal dimension, respectively. The default is point1=0.5 point2=0.5. The following example from sep/plane/qint has point1=0.85 point2=0.74:

  • movie= The movie parameter allows the user to create a movie looping over slices in a cube instead of a static picture. The value of the parameter (from 1 to 3) indicates the axis for looping or 0 (the default) for no movie. The frame increment in the movie is controled by dframe=. The following example from cwp/geo2009TTIModeSeparation/tti3 uses movie=1 to loop over the vertical axis:

To generate a movie out of 4-D data, you can use sfgrey4. Here is an example:

Previous programs of the month: