Python wrapper for DSM
Project description
dsmpy
Python package for computation of synthetic waveforms in spherically homogeneous transversely isotropic (VTI) media using the Direct Solution Method (DSM; Kawai et al. 2006).
Documentation and tutorials can be found here.
INSTALLATION
Requirements
- As
dsmpyrelies on mpi4py, you need to have a working MPI implementation installed (see mpi4py documentation) - gfotran >= 4.8
Using pip
- In a shell, type
pip install dsmpy
This will download the dsmpy package and required dependencies from the PyPI repository.
- Check that dsmpy has been installed succesfully:
python -c "import dsmpy"
Note: Fortran sources for the DSM will be compiled during the installation (using numpy.f2py and the GNU Fortran compiler). If you get compilation errors, check the following:
- gfortran >= 4.8 is required for succesful compilation, because of the optimization flag '-Ofast'
- If you have gfortran <4.8, you should change the compiler flag from '-Ofast' to '-O3' in
<path_of_dsmpy_folder>/pydsm/__init__.py
GETTING STARTED
To get started, you should at least run python test_tipsv.py and python test_tish.psv located in in <path_of_pydsm_folder>/pydsm/tests. These scripts check dsmpy against pre-computed synthetics using the DSM (Fortran).
EXAMPLES
- Running dsmpy using an input file (run on multiple CPUs).
A template input file is in
<path_of_pydsm_folder>/dsmpy/tests/input_files/template.txt:
sac_files ~/git/dsmpy/tests/sac_files/*T
output_folder ~/git/dsmpy/tests/sac_files
# duration of synthetics (in seconds)
tlen 3276.8
# number of points of frequency-domain synthetics
# minimum period Tmin = tlen / nspc (s)
nspc 256
# sampling frequency for time-domain synthetics
sampling_hz 20
# prem, ak135
seismic_model prem
# 0: P-SV+SH, 1: P-SV, 2: SH (default: 0)
mode 0
# 0: quiet, 1: talkative, 2: debug (default: 0)
verbose 0
To run this input file on 2 CPUs:
- open a Terminal
- change the current directory to the dsmpy directory
- paste:
mpiexec -n 2 python pydsm/main.py tests/input_files/template.txt
- Running dsmpy from a python script. Below is an example of python script using dsmpy to compute synthetics:
from dsmpy import dsm, seismicmodel
from dsmpy.event import Event
from dsmpy.station import Station
from dsmpy.utils.cmtcatalog import read_catalog
# load gcmt catalog
catalog = read_catalog()
# get event from catalog
event = Event.event_from_catalog(
catalog, '200707211534A')
# define station FCC
stations = [
Station(
name='FCC', network='CN',
latitude=58.7592, longitude=-94.0884),
]
# load (anisotropic) PREM model
seismic_model = seismicmodel.SeismicModel.prem()
tlen = 3276.8 # duration of synthetics (s)
nspc = 256 # number of points in frequency domain
sampling_hz = 20 # sampling frequency for sythetics
# create input parameters for pydsm
input = dsm.PyDSMInput.input_from_arrays(
event, stations, seismic_model, tlen, nspc, sampling_hz)
# compute synthetics in frequency domain calling DSM Fortran
output = dsm.compute(input)
output.to_time_domain() # perform inverse FFT
output.filter(freq=0.04) # apply a 25 seconds low-pass filter
us = output.us # synthetics. us.shape = (3,nr,tlen)
ts = output.ts # time points [0, tlen]
# brackets can be used to access component and station
u_Z_FCC = output['Z', 'FCC_CN']
# to plot a three-component record section, use
output.plot()
plt.show()
# to write synthetics to SAC files, use
output.write(root_path='.', format='sac')
- Running dsmpy using a (Fortran) DSM input file. Methods are provided to run dsmpy using an input file for the (Fortran) DSM:
from pydsm import dsm, rootdsm_sh
parameter_file = rootdsm_sh + 'AK135_SH.inf'
inputs = dsm.PyDSMInput.input_from_file(parameter_file, mode=2)
outputs = dsm.compute(inputs, mode=2)
outputs.to_time_domain()
us = outputs.us # us.shape = (3,nr,tlen)
ts = outputs.ts # len(ts) = tlen
stations = outputs.stations # len(stations) = nr
components = outputs.components # len(components) = 3
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dsmpy-1.0a2.tar.gz.
File metadata
- Download URL: dsmpy-1.0a2.tar.gz
- Upload date:
- Size: 3.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
166dd2b87d75470fb38bd626bdfd1f84e939b1daf8c43d1b6d1eed710c759b8e
|
|
| MD5 |
fc13bb1016ae6519974a9cd6553e4e36
|
|
| BLAKE2b-256 |
e4239c095f5b02f98572cad418b49bda524d1acebb7fcde9c889e84293d68c32
|
File details
Details for the file dsmpy-1.0a2-cp37-cp37m-macosx_10_14_x86_64.whl.
File metadata
- Download URL: dsmpy-1.0a2-cp37-cp37m-macosx_10_14_x86_64.whl
- Upload date:
- Size: 630.3 kB
- Tags: CPython 3.7m, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97f26f518907fea7c4ac342cadf1381bdbae1818f6aa3951f48a72395fd53cd4
|
|
| MD5 |
cafbc0f36736ba794b49f2b0cf9d8c79
|
|
| BLAKE2b-256 |
c465b3a53c700c17fdc8783b2a074b421fc8c010d35d9ed3382b74037e63837a
|