A new paper is added to the collection of reproducible documents: Double sparsity dictionary for seismic noise attenuation
A key step in sparsifying signals is the choice of a sparsity-promoting dictionary. There are two basic approaches to design such a dictionary: the analytic approach and the learning-based approach. While the analytic approach enjoys the advantage of high efficiency, it lacks adaptivity to various data patterns. On the other hand, the learning-based approach can adaptively sparsify different datasets but has a heavier computational complexity and involves no prior-constraint pattern information for particular data. We propose a double sparsity dictionary (DSD) for seismic data in order to combine the benefits of both approaches. We provide two models to learn the DSD: the synthesis model and the analysis model. The synthesis model learns DSD in the data domain, and the analysis model learns DSD in the model domain. We give an example of the analysis model and propose to use the seislet transform and data-driven tight frame (DDTF) as the base transform and adaptive dictionary respectively in the DSD framework. DDTF obtains an extra structure regularization by learning dictionaries, while the seislet transform obtains a compensation for the transformation error caused by slope dependency. The proposed DSD aims to provide a sparser representation than the individual transform and dictionary and therefore can help achieve better performance in denoising applications. Although for the purpose of compression, the proposed DSD is less sparse than the seislet transform, it outperforms both seislet and DDTF in distinguishing signal and noise. Two simulated synthetic examples and three field data examples confirm a better denoising performance of the proposed approach.
Continuous Integration (CI) is a powerful discipline of software engineering, which involves a shared code repository, where developers contribute frequently (possibly several times per day), and an automated build system which includes testing scripts.
As previously suggested, CI tools can be easily adopted to perform continuous reproducibility: repeatedly testing if previously reproducible results remain reproducibe after software changes. Continuous reproducibility can assure that reproducible documents stay “alive” and continue to be usable.
Numerous tools have appeared in recent years to offer CI services in the cloud: Travis CI, Semaphore, Codeship, Shippable, etc. It is hard to choose one. I would pick CircleCI. CircleCI is developed by a startup company from San Francisco. Its product is not fundamentally different from analogous services but provides a solid implementation, which includes:
- Integration with GitHub
- SSH access
- Sleek user interface
- Simple configuration via circle.yml file
- Fast parallel execution
Let us test if it can serve as a good platform for Madagascar’s continuous reproducibility.
sfmig2 implements 2-D prestack Kirchhoff time migration.
The program is using triangle antialiasing filters.
J. F. Claerbout, 1992, Anti Aliasing: SEP-73, Stanford Exploration Project, 371-390.
D. E. Lumley, J. F. Claerbout, and D. Bevc, 1994, Anti-aliased Kirchhoff 3-D migration: SEG Annual Meeting, Expanded Abstracts, 1282-1285.
The following example from sep/aal/gulf shows migration applied to a near-offset section from the Gulf of Mexico.
The amount of antialiasing is controlled by antialias= parameter.
A half-derivative waveform-correction filter (rho filter) is applied and is controlled by rho= parameter.
The program has an adjoint flag adj= and can be used as a linear operator. The default value adj=y corresponds to migration, adj=n corresponds to modeling (demigration).
An additional required input is vel= (time-migration velocity). An optional output is gather= (common-offset image gathers).
10 previous programs of the month:
The example in rsf/tutorials/cs reproduces the tutorial from Ben Bougher on compressed sensing. The tutorial was published in the October 2015 issue of The Leading Edge.
Madagascar users are encouraged to try improving the results.