This is the repository for SLIM's software release for SINBAD consortium members. The release contains applications and tools (including 3-rd party prerequisites) necessary to demonstrate and use algorithms developed by SLIM's researchers. SLIM's software release is organized in two repositories:
Repository at [SLIM-release-apps] (https://github.com/SINBADconsortium/SLIM-release-apps) contains core of SLIM's software, i.e. all applications, algorithms, tools, and utilities. The software in this repository requires minimal installation, but some of the applications depend on installation of SLIM-release-comp listed below.
Note that each user must have a private copy of SLIM-release-apps in order to to run any applications, since an application is configured to look for data and create directories inside of application's directory. See INSTALLATION file for possible installation strategies.
Repository at [SLIM-release-comp] (https://github.com/SINBADconsortium/SLIM-release-comp) containing extra 3rd-part software for multi-user installation - not needed for some applications from repository SLIM-release-apps. The installation of software from this repository may be shared by multiple users and may require lengthy installation. See INSTALLATION file for possible installation strategies.
You may use this code only under the conditions and terms of the license contained in the file LICENSE provided with this source code. If you do not agree to these terms you may not use this software.
All prerequisites, except for MATLAB, are provided with the software release and should be installed as necessary before using SLIM's software. Installation and using SLIM's software requires MATLAB version R2014a or later from [MathWorks] (http://www.mathworks.com/) including Parallel Computing Toolbox (check file MATLAB-details in this repository for more information). In addition, the installation requires GNU gcc/g++ compilers that come with the operating system. Included in this repository are:
Those packages are listed in README of SLIM-release-comp repository.
[NFFT] (https://www-user.tu-chemnitz.de/~potts/nfft/) - native MATLAB implementation
SLIM's version of [SPGL1] (http://www.cs.ubc.ca/labs/scl/spgl1/)
SLIM's version of [SPOT] (http://www.cs.ubc.ca/labs/scl/spot/)
[pSPOT] (https://github.com/slimgroup/pSPOT/)
Follow the instructions in the INSTALLATION file in this repository to install core of SLIM's software and create necessary scripts to configure your environment. If installation of 3rd-part software from SLIM-release-comp is required, follow the instructions in INSTALLATION file of SLIM-release-comp before you install software in this repository. You will need to have MATLAB installed and added to your PATH environment before you can proceed. If you encounter any problems during the installation, please, let us know. See SUPPORT section at the end for contact information.
You must configure your shell environment before you can run any applications. The environment.* scripts, created during installation, will set SLIM_COMP (and if needed and available), SLIM_APPS, and SLIM_APPS_RUNS environments and add necessary executable and library paths to your shell. You will not be able to run applications if SLIM_COMPS /SLIM_APPS/SLIM_APPS_RUNS variables are not set correctly or MATLAB executables are missing from your shell's PATH environment.
In order to import shell environment you will have to source one of the scripts in the home of SLIM-release-apps.
In the terminal window and once per terminal session, change directory to the home of SLIM-release-apps and do either of the following:
. environment.sh
source environment.csh
If you want to source either of those scripts from the location other then the home of SLIM-release-apps (like from your shell's startup scripts). Then, in the terminal window (and only once per terminal session) do either of the following from any location:
. path_to-SLIM-release-apps/environment.sh
source path_to-SLIM-release-apps/environment.csh
Add the appropriate one of the above to your default-shell's startup script to make the permanent change to the environment. You will not need then to source environment.sh/csh manually.
Once configured, you can check if the SLIM_COMP , SLIM_APPS, and SLIM_APPS_RUNS environments are set correctly and verify if MATLAB executables are in the PATH using:
test_env4slim.sh
test_env4slim.csh
Users who intend to run their jobs in non-interactive batch mode must add those extra steps:
First. create ~/matlab directory if it does not exists.
Execute the following command in terminal:
cp $SLIM_APPS/skel/startup_SLIM.m ~/matlab
First, create ~/matlab/startup.m if it does not exist.
Add the following line at the end of ~/matlab/startup.m:
startup_SLIM
Please, see the specific instructions that are included in the README file in each application's directories. The application directories are organized by topics and are located inside of applications/ directory in the root of unpacked SLIM's software release. See SLIM software's components sections in this README for the current list of applications.
Note, that you might need to download the data before running an application. The relevant instructions can be found in application's README file.
Running any application (after the input file(s) are downloaded) involves typically the following steps:
- open Matlab
- start parallel pool with appropriate number of workers, if needed
- change directory to the main directory of desired application
- run
startup
ifstartup.m
file exists in this directory - change directory to the directory of scrips/examples if such exists
- run
startup
ifstartup.m
file exists in this directory - run desired script
The above steps will ensure that the toolboxes necessary for the application are loaded and the input data files are found.
A provided MATLAB function RunApplication
helps running our
applications. It executes the steps above (except for starting the
parallel pool) and ensures that: 1) appropriate toolboxes are added
before application is being used, and 2) that the application is
executed in proper location. For more information how to use this
function type in MATLAB:
help RunApplication
You will need to create parallel pool with appropriate number of
workers before executing RunApplication
.
Function RunApplication
also allows to easily submit our
applications to run in the non-interactive batch mode using the
following syntax:
batch(@RunApplication, 0, {x1,..., xn}, *other_batch_options...*)
where {x1,..., xn}
are the same arguments as used for
RunApplication
in the interactive mode, but enclosed in the cell
array. For more information about batch command, and its options, type
in MATLAB:
help batch
For the information about SLIM's software packages, please, check the README files included with each package. Especially, check the README files and the applications to see how to execute and customize the applications to change parameters and/or use them with other input data. On-line documentation for all applications can be found at [slim.gatech.edu] (https://slim.gatech.edu/software/sinbad/documentation).
The SLIM's software is divided into to main components: applications and tools. Tools are mostly for general use or are typically problem independent; e.g., algorithms and solvers are considered as tools. Applications illustrate how those different tools can be used to solve specific problems.
2D ocean-bottom marine acquisition via jittered sampling
Rank minimization based source separation in time-jittered marine acquisiotion
Source separation for towed-streamer marine data via sparsity promotion.
Source separation via SVD-free rank minimization in the hierarchical semi-separable representation
Time-jittered blended marine acquisition on non-uniform grids
Joint recovery method for time-lapse seismic data
Efficient least-squares imaging with sparsity promotion and compressive sensing
Fast imaging with surface-related multiples by sparse inversion
Fast imaging with wavelet estimation by variable projection
Time domain LSRTM with sparsity promotion
Wavefield reconstruction imaging
Tutorial for 2D Frequency-domain acoustic modelling and imaging
Tutorial for time-domain 2D/3D acoustic modeling
Time-domain 2D/3D modeling and linearized modeling
3D Frequency-Domain Modeling Kernel
Large-scale seismic data compression with on-the-fly shots/receivers generation from compressed Hierarchical Tucker parameter
Missing receiver interpolation of 3D frequency slices using Hierarchical Tucker optimization
Large-scale seismic data interpolation using SVD-free low-rank matrix factorization.
Seismic data regularization, interpolation, and denoising using factorization based low-rank optimization
Sparsity-promoting denoising of seismic data
Seismic trace interpolation using weighted one-norm minimization
Robust Estimation of Primaries by Sparse Inversion (via L1 minimization)
2D Basic Acoustic Full Waveform Inversion
2D Basic time-stepping acoustic FWI
2D modified Gauss-Newton full-waveform inversion.
Fast and robust 2D full-waveform inversion without source encoding.
2D Wavefield Reconstruction Inversion
2D Wavefield Reconstruction Inversion with Source Estimation
Total Variation Regularized Wavefield Reconstruction Inversion
3D FWI with an Acoustic Helmholtz Modeling Kernel
3D acoustic full-waveform inversion
Parallel 3D frequency domain full waveform inversion
Time-domain 2D FWI with TTI anisotropy
Constrained FWI
Full Waveform Inversion for time-lapse seismic data
Uncertainty quantification for 2D Wavefield Reconstruction Inversion
Scripts to reproduce the examples of the paper by T. van Leeuwen, 2012. ["A parallel matrix-free framework for frequency-domain seismic modeling, imaging and inversion."] (https://slim.gatech.edu/content/parallel-matrix-free-framework-frequency-domain-seismic-modelling-imaging-and-inversion)
Examples for using iWAVE interface for different applications
Common tools for frequency-domain acoustic modelling
2D Frequency-domain acoustic modelling
3D Frequency-domain acoustic modelling
Adaptive sparse recovery
The algorithm for seismic data regularization, interpolation, and denoising using factorization based low-rank optimization
Robust Estimation of Primaries by Sparse Inversion.
Time-domain 2D/3D acoustic modeling kernel
Wavefield reconstruction inversion
Generalized SPGL1
Hierarchical Tucker Optimization
Krylov solvers for band-storage operators
Linearized Bregman method for L1 constrained optimization.
Multigrid preconditioners
Quasi Newton optimization method: L-BFGS with weak Wolfe linesearch
SLIMs' version of SPGL1 1.6 - a solver for large-scale sparse reconstruction. Adapted for parallel computations.
Parallel SPGLR - large-scale matrix completion
SLIM's version of SPOT - a linear-operator toolbox for MATLAB. Adapted for needs of pSPOT.
Parallel extensions to SPOT.
MATLAB interface to running iWAVE
SLIM's version of CurveLab 2.1.2 - curvelet transform.
You may contact SLIM's developers of SINBAD software via issue tracker for this repository. We do not have resources to actively support public version of our software. However, we will try to answer the questions as much as possible.