Source code for pyglimer.ccp.io
"""
This module will handle file IO. The problematic functions here are the
incoming `.mat` files that are produced by the GLImER database.
:copyright:
The PyGLImER development team (makus@gfz-potsdam.de).
:license:
GNU Lesser General Public License, Version 3
(https://www.gnu.org/copyleft/lesser.html)
:author:
Lucas Sawade (lsawade@princeton.edu)
"""
import h5py
import numpy as np
[docs]def load_rawrf(filename):
"""Loads a matlab raw RF file.
Parameters
----------
filename : str
filename of the receiver function ``.mat``-file to be loaded. The
``.mat``-file is expected to contain following parameters. See Notes
below for required content of matlab rawRf file.
Returns
-------
rfs, baz, rayp, lat, lon, elev, dt
Set of RF variables
Notes
-----
File content
:crfs:
MxN matrix of M Receiver Functions and N elements
:cbaz:
M elements long vector with back azimuth values corresponding to
Receiver functions
:crayp:
M elements long vector with ray parameter values corresponding to
Receiver functions
:cslat:
M elements long vector with station latitude corresponding to
Receiver functions
:cslon:
M elements long vector with station longitude corresponding to
Receiver functions
:celev:
M elements long vector with station elevation
:dt:
sampling interval
"""
with h5py.File(filename, 'r') as f:
baz = f['cbaz'][()].flatten()
elev = f['celev'][()].flatten()
rayp = f['crayp'][()].flatten()
rfs = f['crfs'][()].transpose()
lat = f['cslat'][()].flatten()
lon = f['cslon'][()].flatten()
dt = f['dt'][()]
return rfs, baz, rayp, lat, lon, elev, dt
[docs]def load_velocity_model(filename):
""" Loads velocity model and outputs velocities and corresponding
parameters.
Parameters
----------
filename
Returns
-------
vlat, vlon, vdep, vp, vs
"""
try:
with h5py.File(filename, 'r') as f:
vlat = f['lat'][()].flatten()
vlon = f['lon'][()].flatten()
vdep = f['dep'][()].flatten()
vp = f['vp'][()].transpose()
vs = f['vs'][()].transpose()
except Exception as e:
print(e)
print()
return vlat, vlon, vdep, vp, vs
[docs]def load_tracefile(filename):
"""Loading an RF file that has been raytraced."""
# Load file
npzfile = np.load(filename)
# Allocate variables
rf = npzfile['rf']
lat = npzfile['lat']
lon = npzfile['lon']
baz = npzfile['baz']
rayp = npzfile['rayp']
elev = npzfile['elev']
clat = npzfile['clat']
clon = npzfile['clon']
depth = npzfile['depth']
dtimes = npzfile['dtimes']
return rf, lat, lon, baz, rayp, elev, clat, clon, depth, dtimes