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
Astropyconvolution 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
Panelapp (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