Code Monkey home page Code Monkey logo

multicompslopesinterpolation's Introduction

LOGO

mcslopes is a Python library providing the fundamental building blocks to perform local slopes estimation and slope-assisted data reconstruction of multi-component seismic data. It is primarily built on top of PyLops and contains both CPU and GPU versions of each code (see notebooks and scripts folders).

Note that the USE_CUPY variable can be used to switch between the CPU and GPU versions of each code. Also note that the CPU version of the overthrust3d example will be very slow compared to its GPU equivalent!

For more details refer to the accompanying paper Multichannel wavefield reconstruction using smooth slopes information from multicomponent data - Ravasi M., Ruan, J, and Vasconcelos I. submitted to EAGE 2023.

Project structure

This repository is organized as follows:

  • ๐Ÿ“‚ mcslopes: python library containing routines for local slopes estimation and slope-assisted data reconstruction of multi-component seismic data;
  • ๐Ÿ“‚ data: folder containing data;
  • ๐Ÿ“‚ notebooks: set of jupyter notebooks reproducing the experiments in the paper (see below for more details);
  • ๐Ÿ“‚ scripts: set of python scripts used to run the slope-assisted data reconstruction algorithm on any data of choise.

Notebooks

The following notebooks are provided:

  • ๐Ÿ“™ others/Slopes_comparison_hyperbolic.ipynb: notebook comparing different slope estimation methods on a set of hyperbolic events;
  • ๐Ÿ“™ others/NMO_gradient.ipynb: notebook computing NMO of gradient data as in Robertsson et al., 2008;
  • ๐Ÿ“™ gom/Create_data.ipynb: notebook showing how to synthetically create multi-channel, subsampled data to be fed to our reconstruction notebooks ans scripts;
  • ๐Ÿ“™ gom/Interpolation_GOM.ipynb: notebook performing single-channel, multi-channel and slope-assisted multi-channel data reconstruction on a 2D shot gather from the Missisipi Canyon data;
  • ๐Ÿ“™ overthrust3d/Interpolation_Ove3D.ipynb: notebook performing single-channel, multi-channel and slope-assisted multi-channel data reconstruction on a 3D shot gather modelled from the SEG/EAGE Overthrust model;
  • ๐Ÿ“™ overthrust3d/Interpolationwin_Ove3D.ipynb: notebook performing single-channel, multi-channel and slope-assisted multi-channel data reconstruction with fk sliding windows on a 3D shot gather modelled from the SEG/EAGE Overthrust model;

Scripts

The following scripts are provided:

  • ๐Ÿ“™ 2d/Interpolation_slopes.ippyynb: script performing multi-channel interpolation with local slopes of a 2d shot gather;
  • ๐Ÿ“™ 3d/Interpolation_slopes.py: script performing multi-channel interpolation with local slopes of a 3d shot gather.

Both scripts require an input .npz file containing the following fields.

For 2d case:

  • ๐Ÿ“‡ data: 2-dimensional pressure data to interpolate of size nt x nx.
  • ๐Ÿ“‡ grad1: 2-dimensional first-order gradient data of size nt x nx.
  • ๐Ÿ“‡ grad2: 2-dimensional second-order gradient data of size nt x nx.
  • ๐Ÿ“‡ t: time axis of size nt.
  • ๐Ÿ“‡ x: sparsely sampled spatial axis of size nx.
  • ๐Ÿ“‡ xorig: finely sampled spatial axis of size nx_orig. Note that subfactor = nx_orig / nx, which is the subsampling factor of the data.

For 3d case:

  • ๐Ÿ“‡ data: 3-dimensional pressure data to interpolate of size ny x nx x nt
  • ๐Ÿ“‡ grad1: 3-dimensional first-order gradient data to interpolate of size ny x nx x nt
  • ๐Ÿ“‡ t: time axis of size nt.
  • ๐Ÿ“‡ x: finely sampled inline axis of size nx.
  • ๐Ÿ“‡ y: sparsely sampled crossline axis of size ny
  • ๐Ÿ“‡ yorig: finely sampled crossline axis of size ny_orig. Note that subfactor = ny_orig / ny, which is the subsampling factor of the data.

In synthetic examples one can also provide a second .npz file containing the following fields (which will be used to compare the true wavefield with the reconstructed one).

For 2d case:

  • ๐Ÿ“‡ data: 2-dimensional pressure data to interpolate of size nt x nx_orig.
  • ๐Ÿ“‡ grad1: 2-dimensional first-order gradient data of size nt x nx_orig.
  • ๐Ÿ“‡ grad2: 2-dimensional second-order gradient data of size nt x nx_orig.
  • ๐Ÿ“‡ t: time axis of size nt.
  • ๐Ÿ“‡ x: finely sampled spatial axis of size nx_orig.

For 3d case:

  • ๐Ÿ“‡ data: 3-dimensional pressure data to interpolate of size ny_orig x nx x nt.
  • ๐Ÿ“‡ grad1: 2-dimensional first-order gradient data of size ny_orig x nx x nt.
  • ๐Ÿ“‡ t: time axis of size nt.
  • ๐Ÿ“‡ x: finely sampled inline axis of size nx.
  • ๐Ÿ“‡ y: finely sampled crossline axis of size ny.

Getting started ๐Ÿ‘พ ๐Ÿค–

To ensure reproducibility of the results, we suggest using the environment.yml file when creating an environment.

Simply run:

./install_env.sh

It will take some time, if at the end you see the word Done! on your terminal you are ready to go. After that you can simply install your package:

pip install .

or in developer mode:

pip install -e .

Remember to always activate the environment by typing:

conda activate mcslopes

Finally, to run tests simply type:

pytest

Disclaimer: All experiments have been carried on a Intel(R) Xeon(R) CPU @ 2.10GHz equipped with a single NVIDIA GEForce RTX 3090 GPU. Different environment configurations may be required for different combinations of workstation and GPU.

multicompslopesinterpolation's People

Contributors

mrava87 avatar

Stargazers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.