Repo for the TRANSFORM 2021 Hackathon project on seismic acquisition footprint noise filtering (discussion here)
F.R.I.D.A.: Footprint Removal Interactive Design App
To create the conda environment (called "footprint") for this repo, use
$ conda env create -f environment.yml
To activate the environment, use
$ conda activate footprint
To deactivate the environment, use
$ conda deactivate
matplotlib==3.2.2
param==1.10.1
scipy==1.5.0
scikit_image==0.16.2
holoviews==1.14.3
torch==1.8.1
dask==2.19.0
panel==0.11.3
hvplot==0.7.1
xarray==0.17.0
numpy==1.20.2
- Clone the Repository.
- Install the requirements :
pip install -r requirements.txt
- Run :
python -m panel serve ./t21-footprint/smallfoot/app.py --dev
- Go to your browser and access http://localhost:5006/app
- Pre-hackathon meetup PowerPoint presentation here
- Introduction to post-hack presentation here
- For a definition of acquisition footprint read the SEG Wiki
- For some examples, read this blog post, and also go to the Resources and reading material below
- Project background: Elwyn and I have done some work putting together a tool to remove acquisition footprint from seismic data; this has been my longest-lived side project.
- If you are curious about it, please read Chapter 39 of the upcoming 52 Things You Should Know About Geocomputing and then head over to the Tutorial notebook; give it a spin
The long term goal (AKA, the "dream") would be to create an open-source tool, ideally part of Awesome Open Geoscience, that can be used by geophysicists and geologists to remove footprint from seismic data, WHEN 5D interpolation or other costly post-stack processing works are not an options. The objectives of the hack are:
- The primary objective of this projects would be to find and eliminate performance bottlenecks in the existing code. We already improved computations by switching from
Astropy
convolution toScipy
(see here and here) - Secondary objective, test with noisier examples (we will need to find open data with footprint, F3 has some)
- Tertiary objective would be to create documentation for the tool, either by expanding/completing the Tutorial notebook or a separate document
- Final objective, time permitting, would be to put together a VERY minimal
Panel
app (for example load data from numpy file >> display a time slice and its 2D spectrum >> derive filter >> save filter to numpy file) and deploy - I am including this for information purposes only: down the road the tool will need a way to automatically recognize and segment time slices of irregular shape into components of polygonal shape (by whatever means)
- A mathematical review of the Fourier transform - SEG Wiki
- An Intuitive Explanation of Fourier Theory
- The 1-D Fourier transform - SEG Wiki
- The 2-D Fourier transform - SEG Wiki
- Elegant SciPy - Chapter 4: Frequency and the Fast Fourier Transform
Elwyn and I will be working on this no-matter-what. But we welcome participants that are interested in this project. Useful skills would be:
- Programming / performance optimization /profiling (Numpy broadcasting / Dask, etc.)
- Geophysics / signal analysis
- Testing
- Documentation
- Ideas - any ideas or suggestion is welcome