Program of the month: sfdipfilter

February 6, 2014 Programs No comments

sfdipfilter filters input data based on a range of dips (slopes).

The following example from rsf/su/rsfdipfilt (borrowed from one of Seismic Unix demos) shows a synthetic dataset with three events before and after dip filtering:

sfdipfilter operates in 2-D or 3-D Fourier transform domain, with the dimensionality specified by dim=. The dip range is specified either by angles (if angle=y) or by velocities (if angle=n). The four parameters (either ang1=, ang2=, ang3=, ang4= or v1=, v2=, v3=, v4=) specify the range. If pass=y, the range between v2 and v3 is passed, and the range below v1 or above v4 is rejected. If pass=n, the range between v2 and v3 is rejected, and the range below v1 or above v4 is passed. The transition between pass and reject regions is implemented with a sine tapering.

10 previous programs of the month

Program of the month: sfinttest1

January 9, 2014 Programs No comments

sfinttest1 performs forward interpolation from a regular grid to irregular locations (in 1-D).

The following example from sep/forwd/chirp shows regularly sampled values of a variable-frequency signal and the error of its interpolation using linear and cubic-convolution interpolators.

The irregular coordinates for interpolation are supplied in a file specified by coord=. The type of the interpolator is specified by interp=. The currently implemented types are Lagrange (including linear and nearest-neighbor interpolation), cubic convolution, weighted sinc interpolation (with Kaiser, Lanczos, cosine, and Welsh windows), B-spline, and MOM (slightly improved B-spline). The size of the interpolation filter is given by nw=. The Kaiser-window interpolator requires an additional parameter, which is specified by kai=.

An alternative (using invertible cubic spline interpolation) is sfiwarp.

A 2-D version is sfinttest2. The following example from sep/forwd/chirp2 compares the error of Kaiser-windowed 8-point sinc interpolation and 8-point B-spline interpolator applied to interpolating a 2-D signal.

10 previous programs of the month

Structural uncertainty in time migration

December 7, 2013 Documentation No comments

A new paper is added to the collection of reproducible documents:
Structural uncertainty of time-migrated seismic images

Structural information in seismic images is uncertain. The main cause of this uncertainty is uncertainty in velocity estimation. We adopt the technique of velocity continuation for estimating velocity uncertainties and corresponding structural uncertainties in time-migrated images. Data experiments indicate that structural uncertainties can be significant even when both structure and velocity variations are mild.

Parallel sweeping preconditioner for 3D Helmholtz

December 6, 2013 Documentation No comments

A new paper is added to the collection of reproducible documents:
A parallel sweeping preconditioner for heterogeneous 3D Helmholtz equations

A parallelization of a sweeping preconditioner for 3D Helmholtz equations without large cavities is introduced and benchmarked for several challenging velocity models. The setup and application costs of the sequential preconditioner are shown to be $ O(\gamma ^2 N^{4/3})$ and $ O(\gamma N \log N)$, where $ \gamma(\omega)$ denotes the modestly frequency-dependent number of grid points per Perfectly Matched Layer. Several computational and memory improvements are introduced relative to using black-box sparse-direct solvers for the auxiliary problems, and competitive runtimes and iteration counts are reported for high-frequency problems distributed over thousands of cores. Two open-source packages are released along with this paper: Parallel Sweeping Preconditioner (PSP) and the underlying distributed multifrontal solver, Clique.

Program of the month: sfcausint

December 1, 2013 Programs No comments

sfcausint implements an operation of causal numerical integration. This is a simple operation, which mathematically amounts to recursion
$$yn = y{n-1} + x_n$$
or to inversion of a simple bidiagonal matrix. See Geophysical Image Estimation by Example for more explanation.

The only parameter in sfcausint is adj=, the flag for adjoint computation. The adjoint operation applies recursion backwards
$$x{n-1} = xn + y_{n-1}$$

The following example from gee/ajt/causint illustrates forward and ajoint causal integration with sfcausint:

10 previous programs of the month

Madagascar paper

November 21, 2013 Links No comments

A paper describing Madagascar has been published in the Journal of Open Research Software (JORS), a new peer-reviewed open-access journal, which features papers describing research software with high reuse potential.

This paper should become a standard reference for those who use Madagascar in their research and wish to reference it in scientific publications. Following a recommendation of Robin Wilson, a file called CITATION.txt is placed in the top Madagascar directory to provide reference information. Here are the current contents of this file:

Fomel, S., Sava, P., Vlad, I., Liu, Y. and Bashkardin, V. 2013. Madagascar:
open-source software project for multidimensional data analysis and
reproducible computational experiments. Journal of Open Research
Software 1(1):e8, DOI: http://dx.doi.org/10.5334/jors.ag

@Article{m8r,
  author = {S. Fomel and P. Sava and I. Vlad and Y. Liu and
                 V. Bashkardin},
  title = {Madagascar: open-source software project for
              multidimensional data analysis and reproducible 
              computational experiments},
  journal =      {Journal of Open Research Software},
  year =      2013,
  volume =      1,
  number =      1,
  pages =      {e8},
  doi =          {http://dx.doi.org/10.5334/jors.ag}}

It is hard to give proper credit to everyone who contributed to such as collaborative project, as Madagascar. Even the smallest contribution can be crucially important. The five authors of the paper are the five most active all-time contributors to Madagascar by the number of commits to the repository at the time of the paper submission.

Geophysical Image Estimation by Example

November 18, 2013 Documentation No comments

Inspired by projects such as the Khan Academy, Jon Claerbout is recording short videos narrating his book, Geophysical Image Estimation by Example. You can reproduce computational examples from the book (translated from Ratfor to C) by following its Madagascar version.

3-D random noise attenuation using f-x-y NRNA

November 13, 2013 Documentation No comments

A new paper is added to the collection of reproducible documents:
Noncausal f-x-y regularized nonstationary prediction filtering for random noise attenuation on 3D seismic data

Seismic noise attenuation is very important for seismic data analysis and interpretation, especially for 3D seismic data. In this paper, we propose a novel method for 3D seismic random noise attenuation by applying noncausal regularized nonstationary autoregression (NRNA) in f-x-y domain. The proposed method, 3D NRNA (f-x-y domain) is the extended version of 2D NRNA (f-x domain). f-x-y NRNA can adaptively estimate seismic events of which slopes vary in 3D space. The key idea of this paper is to consider that the central trace can be predicted by all around this trace from all directions in 3D seismic cube, while the 2D f-x NRNA just considers the middle trace can be predicted by adjacent traces along one space direction. 3D f-x-y NRNA uses more information from circumjacent traces than 2D f-x NRNA to estimate signals. Shaping regularization technology guarantees the nonstationary autoregression problem can be realizable in mathematics with high computational efficiency. Synthetic and field data examples demonstrate that, compared with f-x NRNA method, f-x-y NRNA can be more effective in suppressing random noise and improve trace-by-trace consistency, which are useful in conjunction with interactive interpretation and auto-picking tools such as automatic event tracking.

Random noise attenuation using f-x RNA

November 12, 2013 Documentation No comments

A new paper is added to the collection of reproducible documents:
Random noise attenuation using f-x regularized nonstationary autoregression

We propose a novel method for random noise attenuation in seismic data by applying regularized nonstationary autoregression (RNA) in frequency-space (f-x) domain. The method adaptively predicts the signal with spatial changes in dip or amplitude using f-x RNA. The key idea is to overcome the assumption of linearity and stationarity of the signal in conventional f-x domain prediction technique. The conventional f-x domain prediction technique uses short temporal and spatial analysis windows to cope with the nonstationary of the seismic data. The proposed method does not require windowing strategies in spatial direction. We implement the algorithm by iterated scheme using conjugate gradient method. We constrain the coefficients of nonstationary autoregression (NA) to be smooth along space and frequency in f-x domain. The shaping regularization in least square inversion controls the smoothness of the coefficients of f-x RNA. There are two key parameters in the proposed method: filter length and radius of shaping operator. Synthetic and field data examples demonstrate that, compared with f-x domain and time-space (t-x) domain prediction methods, f-x RNA can be more effective in suppressing random noise and preserving the signals, especially for complex geological structure.

This paper is the first direct contribution from China University of Petroleum (Beijing).

Continuous integration and reproducibility

November 11, 2013 Systems No comments

Continuous Integration (CI) is a technique in software engineering, usually described as one of the common techniques in extreme programming (XP). CI implies maintaining a shared code repository, where developers contribute frequently (possibly several times per day), and an automated build system that includes testing scripts.

Using a CI tool, such as TeamCity, it is easy to implement CI for Madagascar, which includes both compilation tests and reproducibility tests. One of the computers at the University of Texas at Austin has been dedicated to such testing and has helped to detect several bugs and reproducibility problems. You can subscribe to testing reports using the RSS feed. To implement similar testing on your own computer, install TeamCity and configure it as follows:

1. Configure Version Control Settings to connect to the Madagascar Subversion repository.

2. Configure Build Step to use a command-line script such as the following:

./configure --prefix=/tmp/rsfroot 
make install 
source env.sh 
export RSFFIGS=$RSFROOT/share/madagascar/figs 
cd book 
scons test

3. Go out for a cup of coffee and come back to check the results of testing. On a CI server, the run of the “compile & test” script is triggered every time somebody commits a new change to the repository.

4. Fix detected problems and commit your changes back to the repository to continue the integration loop.

Adopting the technique of Continuous Integration, in combination with reproducibility testing, provides a robust development environment with well-debugged code and continuously-maintained reproducible examples. It should encourage an active participation of the Madagascar development community.