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.
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}
}
pyekfmm developing team, 2021-present
GNU General Public License, Version 3
(http://www.gnu.org/copyleft/gpl.html)
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
Mac OS, Linux, Windows (need Microsoft C++ Build Tools)
The "demo" directory contains all runable scripts to demonstrate different applications of pyekfmm.
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
- scipy
- numpy
- matplotlib
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.
Regarding any questions, bugs, developments, collaborations, please contact
Yangkang Chen
[email protected]
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
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
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
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
DEMO5
The following figure shows an example of traveltime calculation for the global earth. Generated by demos/test_pyekfmm_fig5.py
DEMO6
The following figure shows a location example and comparison with the NonLinLoc (NLL) result.
DEMO7
The following figure shows a relocation example of the Spanish Springs, Nevada earthquake sequence.
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.
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.
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
DEM11
The following figure shows an example of traveltime calculation comparison between Pyekfmm and skfmm (scikit-fmm)
Generated by demos/test_pyekfmm_fig1.py
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
DEM13
The following figure shows an example of computing rays in models with different sizes
Generated by demos/test_pyekfmm_raytracing3d.py
DEM14
The following figure shows an example of computing reciprocal rays
Generated by demos/test_pyekfmm_raytracing3d_reciprocal.py
DEM15
The following figure shows an example of benchmarking Pyekfmm with bh_tomo package
Generated by demos/test_pyekfmm_raytracing2d_benchmarkWITHbhtomo.py