An open API service indexing awesome lists of open source software.

https://github.com/aaspip/pyekfmm

A python package for 3D fast-marching-based traveltime calculation and its applications in seismology
https://github.com/aaspip/pyekfmm

Last synced: 22 days ago
JSON representation

A python package for 3D fast-marching-based traveltime calculation and its applications in seismology

Awesome Lists containing this project

README

        

**Pyekfmm**
======

## Description

**Pyekfmm** is python package for 3D fast-marching-based traveltime calculation and its applications in seismology. The initial version of this package was held at https://github.com/chenyk1990/pyekfmm, which is no longer maintained.

## Reference
Chen Y., Chen, Y.F., Fomel, S., Savvaidis, A., Saad, O.M., Oboue, Y.A.S.I. (2023). A python package for 3D fast-marching-based traveltime calculation and its applications in seismology, Seismological Research Letters, 94, 2050-2059.

BibTeX:

@article{pyekfmm,
title={Pyekfmm: a python package for 3D fast-marching-based traveltime calculation and its applications in seismology},
author={Yangkang Chen and Yunfeng Chen and Sergey Fomel and Alexandros Savvaidis and Omar M. Saad and Yapo Abol\'{e} Serge Innocent Obou\'{e}},
journal={Seismological Research Letters},
volume={94},
number={1},
issue={1},
pages={2050-2059},
year={2023}
}

-----------
## Copyright
pyekfmm developing team, 2021-present

-----------
## License
GNU General Public License, Version 3
(http://www.gnu.org/copyleft/gpl.html)

-----------
## Install
Using the latest version

git clone https://github.com/aaspip/pyekfmm
cd pyekfmm
pip install -v -e .

or using Pypi

pip install pyekfmm

or (recommended, because we update very fast)

pip install git+https://github.com/aaspip/pyekfmm

-----------
## Verified runnable OS
Mac OS, Linux, Windows (need Microsoft C++ Build Tools)

-----------
## Examples
The "demo" directory contains all runable scripts to demonstrate different applications of pyekfmm.

-----------
## Notebook tutorials
Some notebook tutorials are stored separately to ensure the minimal size of the pyekfmm package. They can be found at

https://github.com/aaspip/notebook/blob/main/pyekfmm

-----------
## Dependence Packages
* scipy
* numpy
* matplotlib

-----------
## Development
The development team welcomes voluntary contributions from any open-source enthusiast.
If you want to make contribution to this project, feel free to contact the development team.

-----------
## Contact
Regarding any questions, bugs, developments, collaborations, please contact
Yangkang Chen
[email protected]

-----------
## Gallery
The gallery figures of the pyekfmm package can be found at
https://github.com/aaspip/gallery/tree/main/pyekfmm
Each figure in the gallery directory corresponds to a DEMO script in the "demo" directory with the exactly the same file name. These gallery figures are also presented below.

DEMO1
The following figure shows an example of traveltime calculation for 2D isotropic media (a) and anisotropic media (b). Generated by [demos/test_pyekfmm_fig1.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig1.py)
DEMO1

DEMO2
The following figure shows an example of traveltime calculation for 3D isotropic media (a) and anisotropic media (b). Generated by [demos/test_pyekfmm_fig2.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig2.py)
DEMO2

DEMO3
The following figure shows an example of traveltime calculation for 2D heterogeneous isotropic and anisotropic media. (a) Vertical velocity model. (b) Horizontal velocity model. (c) Anisotropic parameter η model. (d) Traveltime table in isotropic media. (e) Traveltime table in anisotropic media. Generated by [demos/test_pyekfmm_fig3.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig3.py)
DEMO3

DEMO4
The following figure shows an ray tracing example in 2D (a) and 3D (b) media with vertically increasing velocities. Generated by [demos/test_pyekfmm_fig4.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig4.py)
DEMO4

DEMO5
The following figure shows an example of traveltime calculation for the global earth. Generated by [demos/test_pyekfmm_fig5.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig5.py)
DEMO5

DEMO6
The following figure shows a location example and comparison with the NonLinLoc (NLL) result.
DEMO6

DEMO7
The following figure shows a relocation example of the Spanish Springs, Nevada earthquake sequence.
DEMO7

DEMO8
The following figure shows a surface-wave tomography test. (a) Ray path between a pair of virtual source (red star) and station (blue triangle). The background is the 5 sec group velocities of the Australian continent from ambient noise imaging. (b) Travel time field. (c) Ray paths of all 25,899 pairs. (d)-(f) The same as (a)-(c) but for the initial model with a constant velocity.
DEMO8

DEMO9
The following figure shows the traveltime misfit in the surface-wave tomography test. (a) Group velocities inverted from the travel time residuals using the kernel constructed from the initial model. (b) Travel time misfits estimated from the initial and final models.
DEMO9

# Below are new examples in addition to the results in the original paper
DEM10
The following figure shows an example of traveltime calculation of two shots for 3D isotropic media
Generated by [demos/test_pyekfmm_fig2-multishots.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig2.py)
DEMO2

DEM11
The following figure shows an example of traveltime calculation comparison between Pyekfmm and skfmm (scikit-fmm)
Generated by [demos/test_pyekfmm_fig1.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_fig1.py)
DEMO2

DEM12
The following figure shows an example of computing traveltime, takeoff angle (dip and azimuth)
Generated by [demos/test_pyekfmm_takeoff_dip_and_azim.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_takeoff_dip_and_azim.py)
DEMO2

DEM13
The following figure shows an example of computing rays in models with different sizes
Generated by [demos/test_pyekfmm_raytracing3d.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_raytracing3d.py)
DEMO2

DEM14
The following figure shows an example of computing reciprocal rays
Generated by [demos/test_pyekfmm_raytracing3d_reciprocal.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_raytracing3d_reciprocal.py)
DEMO2

DEM15
The following figure shows an example of benchmarking Pyekfmm with bh_tomo package
Generated by [demos/test_pyekfmm_raytracing2d_benchmarkWITHbhtomo.py](https://github.com/aaspip/pyekfmm/blob/main/demos/test_pyekfmm_raytracing2d_benchmarkWITHbhtomo.py)
DEMO2