si4ti is a LGPL licensed seismic inversion tool for monitoring effects in 4D seismic from changes in acoustic properties of a reservoir.
si4ti timeshift computes the dynamic timeshift between traces of different datasets (vintages). It uses vertical and horizontal smoothing constraints, and no prior information.
si4ti impedance uses a statistical wavelet and lateral, horizontal and 4D smoothing for computing the relative acoustic impedance of a set of vintages.
Pre-built executables for Linux can be downloaded from here.
We provide two build flags that let you turn on and off the timeshift
(BUILD_TIMESHIFT
) and impedance (BUILD_IMPEDANCE
) tools. By default, both
tools are built.
To build si4ti you need:
- A C++11 compatible compiler (tested on gcc)
- CMake version 3.15 or greater
- Eigen3 version 3.3.4 or greater
- OpenMP
- segyio run cmake with
EXPERIMENTAL=ON
to get the required C++ headers - fftw If built with
USE_FFTW=True
- Boost
math
module version 1.76 or greater ifBUILD_TIMESHIFT=ON
To build the documentation you also need:
To build and install si4ti run the following commands in your console:
git clone https://github.com/equinor/si4ti
mkdir si4ti/build
cd si4ti/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
make install
To build the documentation run:
cmake .. -DBUILD_DOC=TRUE
make doc
For more information on how to run the programs:
timeshift --help
impedance --help
apply-timeshift --help
si4ti provides a Python bindings for the impedance calculations. No Python interface for the timeshift is provided.
Pre-built wheels are available for the following platforms for Python 3.10 up to 3.13:
manylinux_2_28
forx86_64
- MacOS X 14.0 and newer for
arm64
- MacOS X 13.0 and newer for
x86_64
The pre-built wheels can be installed via pip
pip install si4ti
si4ti is compute intense and highly profits from compiler optimisation and
vectorisation. Therefore, the prebuilt wheels have vectorisation enabled, but
still aim for good portability. The x86_64
wheels use x86-64-v3
architecture optimisations which should be supported by Intel Haswell (released
2013), AMD Excavator, and newer CPUs, see the GCC documentation for more
information and overview
of microarchitecture levels on
Wikipedia. The
arm64
wheels are currently using the default optimisation chosen by the
compiler and should be portable between all arm64
platforms.
You can install si4ti from source via the the Git repository. This allows to compile the package with FFTW3 support as well as platform specific optimisation which may improve the performance.
During compilation, you need the following dependencies.
- A C++11 compatible compiler (tested on gcc and clang)
- Python 3.10 or greater including the development headers
- CMake version 3.15 or greater
- Eigen3 version 3.3.4 or greater
- OpenMP
- fftw if the bindings are built with
USE_FFTW=ON
Compilation of the Python bindings via pip
only builds the bindings and not
the command line tools. One can specify compile options directly during the
pip
invocation similarly to using CMake directly. The following command
builds and installs the Python bindings in test configuration with OpenMP and
FFTW on MacOS from the python/
directory of the repository.
First change into the python/
directory
cd python/
and then invoke the build process via pip
OpenMP_ROOT="/opt/homebrew/opt/libomp" pip install -Ccmake.define.USE_FFTW=ON .[test]
Afterwards you can run the tests
python -m pytest --memray tests
Note, that you are expected to observe increased performance if compiling with
platform specific optimisation. You can add relevant compiler flags either via
the CXXFLAGS
environment variable or the CMake parameter CMAKE_CXX_FLAGS
(via -Ccmake.define.CMAKE_CXX_FLAGS=<flags>
).
The interface is inspired by the command line interface. Please check the Python help for details. You can find the Python help via
import si4ti
help(si4ti)