Reproducible material for Why POCS works, and how to make it better - Ravasi M., Luiken N. submitted to Geophysics.
This repository is organized as follows:
- 📂 pypocs: python library containing routines for POCS interpolation with various solvers;
- 📂 data: folder containing sample data;
- 📂 notebooks: set of jupyter notebooks reproducing the experiments in the paper (see below for more details);
- 📂 scripts: set of python scripts used to facilitate the run of multiple experiments;
The following notebooks are provided:
- 📙
POCS_Overthrust-DataCreation.ipynb
: notebook creating the input .npz dataset to be used as input for the scripts (see below); - 📙
POCS_Overthrust-Irregular3D.ipynb
: notebook performing interpolation of a shot gather of the Overthrust dataset from irregularly sampled inlines; - 📙
POCS_Overthrust-FullIrregular3D.ipynb
: notebook performing interpolation of a shot gather of the Overthrust dataset from an irregularly sampled 2d-grid; - 📙
POCS_Overthrust-Summary.ipynb
: notebook visualizing the results of the various algorithms used in the two previous notebooks. - 📙
POCS_Overthrust-Offthegrid3D_windows.ipynb
: notebook performing interpolation of a shot gather of the Overthrust dataset from irregularly sampled inlines with dithering (using disjoint windowed approach); - 📙
POCS_Overthrust-Offthegrid3D_sliding.ipynb
: notebook performing interpolation of a shot gather of the Overthrust dataset from irregularly sampled inlines with dithering (using global, sliding-window approach).
The following script is provided:
- 📙
InterpOffthegrid.py
: script performing interpolation with primal-dual on off-the-grid receivers;
The script requires an input .npz
file containing the following fields.
- 📇
data
: 3-dimensional pressure data to interpolate of sizenrx x nry x nt
- 📇
t
: time axis of sizent
. - 📇
RECX
: x-locations of all receivers in the input regular grid. - 📇
RECY
: y-locations of all receivers in the input regular grid. - 📇
recz
: z-location of receivers (assumed to be here the same for all receivers - use average if they differ). - 📇
SRCX
: x-location of source. - 📇
SRCY
: y-location of source. - 📇
srcz
: z-location of source.
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 pypocs
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.
If you find this library useful for your work, please cite the following papers
@article{ravasi2022,
title={Why POCS works, and how to make it better},
authors={M. Ravasi, N. Luiken},
journal={ArXiv},
year={2022}
}