dsm¶
Main module of dsmpy. Contains the classes for core dsmpy objects and the methods for serial and parallel computation of synthetic seismograms using the Fortran DSM.
Compute functions¶
compute¶
- dsmpy.dsm.compute(pydsm_input, write_to_file=False, mode=0)¶
 Compute spectra using DSM.
- Parameters
 dsm_input (PyDSMInput) – inputs for DSM.
mode (int) – computation mode. 0: both, 1: P-SV, 2: SH.
write_to_file (bool) – write spetrum files to disk
specified in dsm_input.output. (as) –
- Returns
 - object containing spectra and
 stations/source information.
- Return type
 
Note
SH and P-SV spectra are summed by default. Using only P-SV or SH results in non-physical waves and should be avoided. See Kawai et al. (2006) for details.
Examples
>>> catalog = dsmpy.utils.cmtcatalog.read_catalog() >>> event = Event.event_from_catalog( ... catalog, '200707211534A') >>> stations = [ ... Station( ... name='FCC', network='CN', ... latitude=58.7592, longitude=-94.0884), ... ] >>> model = SeismicModel.prem() >>> input = PyDSMInput.input_from_arrays( ... event, stations, ... model, tlen=1638.4, nspc=256, ... sampling_hz=20) >>> output = compute(input, mode=0) >>> output.plot() >>> plt.show()
compute_dataset_parallel¶
- dsmpy.dsm.compute_dataset_parallel(dataset, seismic_model, tlen, nspc, sampling_hz, mode=0, write_to_file=False, verbose=0, log=None)¶
 Compute spectra using DSM with data parallelization for a given seismic model.
This method scales to large dataset and many CPU cores, since the dataset is split (scattered) between many cores.
- Parameters
 dataset (Dataset) – dataset of events & stations.
mode (int) – computation mode. 0: both, 1: P-SV, 2: SH.
write_to_file (bool) – write output in Kibrary format (default is False).
- Returns
 - list of PyDSMOutput objects with one
 entry for each event in dataset.
- Return type
 list of PyDSMOutput
Examples
>>> dataset = Dataset.dataset_from_sac( ... sac_files, headonly=False) >>> model = SeismicModel.prem() >>> outputs = compute_dataset_parallel( ... dataset, model, tlen=1638.4, nspc=256, ... sampling_hz=20, mode=0) >>> outputs[0].plot() >>> plt.show()
compute_models_parallel¶
- dsmpy.dsm.compute_models_parallel(dataset, models, tlen, nspc, sampling_hz, mode=0, write_to_file=False, verbose=0)¶
 Compute synthetics for a list of models in parallel.
At the moment, we must have len(models) % n_cores == 0. If this is not satisfied, the list of models will be padded to the closest larger integer that satisfies this relation.
Warning: When the dataset contains a large number of records, and for a large number of seismic models, the memory usage for this method can get large as it scales as len(models) * dataset.nr.
- Parameters
 dataset (Dataset) – dataset.
models (list of SeismicModel) – the models
tlen (float) – duration of the synthetics (in seconds) (better to be 2**n/10)
nspc (int) – number of frequency points in the synthetics (better to be 2**n)
sampling_hz (int) –
mode (int) – computation mode. 0: both, 1: P-SV, 2: SH (default is 0).
write_to_file (bool) – write output in Kibrary format (default is False).
verbose (int) – debugging parameter (default is 0).
- Returns
 Shape is (n_models, n_events).
- Return type
 list of list of PyDSMOutput
Examples
>>> dataset = Dataset.dataset_from_sac( ... sac_files) >>> models = [SeismicModel.prem(), SeismicModel.ak135()] >>> outputs = compute_models_parallel( ... dataset, models, tlen=1638.4, nspc=256, ... sampling_hz=20, mode=0) >>> fig, ax = plt.subplots(1) >>> outputs[0][0].plot_component( ... component=Component.T, ax=ax, label='prem') >>> outputs[1][0].plot_component( ... component=Component.T, ax=ax, label='ak135') >>> plt.show()
compute_parallel¶
- dsmpy.dsm.compute_parallel(pydsm_input, mode=0, write_to_file=False, verbose=0)¶
 Compute spectra using DSM with data parallelization.
DSMInput¶
- class dsmpy.dsm.DSMInput(re, ratc, ratl, tlen, nspc, omegai, imin, imax, nzone, vrmin, vrmax, rho, vpv, vph, vsv, vsh, eta, qmu, qkappa, r0, eqlat, eqlon, mt, nr, theta, phi, lat, lon, output, file_mode=1)¶
 Input parameters used by the Fortran DSM.
- Parameters
 re (float) –
ratc (float) –
ratl (float) –
tlen (float) – duration of the synthetics (in seconds) (must be 2**n/10)
nspc (int) – number of frequency points in the synthetics (must be 2**n)
omegai (float) –
imin (int) –
imax (int) –
nzone (int) –
vrmin (
ndarray) –vrmax (
ndarray) –rho (
ndarray) –vpv (
ndarray) –vph (
ndarray) –vsv (
ndarray) –vsh (
ndarray) –eta (
ndarray) –qmu (
ndarray) –qkappa (
ndarray) –r0 (float) –
eqlat (float) –
eqlon (float) –
mt (
ndarray) –nr (int) –
theta (
ndarray) –phi (
ndarray) –lat (float) –
lon (float) –
output (
ndarray) –file_mode (int) –
- classmethod input_from_arrays(event, stations, seismic_model, tlen, nspc)¶
 Build a DSMInput from user-friendly arguments.
- Parameters
 event (Event) – earthquake information.
stations (list of Station) – seismic stations.
seismic_model (SeismicModel) – Earth structure model (e.g. PREM).
tlen (float) – duration of the synthetics (in seconds) (better to be 2**n/10)
nspc (int) – number of frequency points in the synthetics (better to be 2**n)
- Returns
 DSMInput object
- Return type
 
- classmethod input_from_file(parameter_file, file_mode=1)¶
 Build a DSMInput object from a DSM input file.
- Parameters
 parameter_file (str) – path of a DSM input file
mode (int) – 1: P-SV, 2: SH
- Returns
 DSMInput
PyDSMInputFile¶
- class dsmpy.dsm.PyDSMInputFile(input_file)¶
 Input file for dsmpy.
- Parameters
 input_file (str) – path of dsmpy input file
PyDSMInput¶
- class dsmpy.dsm.PyDSMInput(dsm_input, sampling_hz=None, file_mode=1)¶
 Input parameters for dsmpy compute methods.
- Parameters
 dsm_input (DSMInput) – input parameters for Fortran DSM.
sampling_hz (int) – sampling frequency for time-domain waveforms.
mode (int) – 1: P-SV, 2: SH. (default is 1).
- classmethod input_from_arrays(event, stations, seismic_model, tlen, nspc, sampling_hz)¶
 Build a PyDSMInput from user-friendly arguments.
- Parameters
 event (Event) – earthquake information.
stations (list of Station) – seismic stations.
seismic_model (SeismicModel) – Earth structure model (e.g. PREM).
tlen (float) – duration of the synthetics (in seconds) (better to be 2**n/10)
nspc (int) – number of frequency points in the synthetics (better to be 2**n)
sampling_hz (float) – sampling frequency for time-domain synthetics.
- Returns
 PyDSMInput object.
- Return type
 
- classmethod input_from_file(parameter_file, sampling_hz=None, source_time_function=None, file_mode=1)¶
 Build a PyDSMInput object from a DSM input file.
- Parameters
 parameter_file (str) – path of a DSM input file.
sampling_hz (float) – sampling frequency
time-domain waveforms. (for) –
source_time_function (SourceTimeFunction) –
object. (SourceTimeFunction) –
file_mode (int) – 1: P-SV, 2: SH.
- Returns
 PyDSMInput object
PyDSMOutput¶
- class dsmpy.dsm.PyDSMOutput(spcs, stations, event, sampling_hz, tlen, nspc, omegai=0.0014053864092981234, model_id=None)¶
 Output from dsmpy compute methods.
- Parameters
 spcs (ndarray) – seismic spectra computed with DSM. Shape is (3, nr, nspc+1).
stations (ndarray of Station) – stations. Shape is (nr,)
event (Event) – seismic event (the source).
sampling_hz (int) – sampling frequency for time-domain waveforms
tlen (float) – duration of the synthetics (in seconds) (better to be 2**n/10)
nspc (int) – number of frequency points in the synthetics (better to be 2**n)
omegai (float) – numerical damping using in DSM. Default is default_params[‘omegai’]. Better to leave it at its default value.
model_id (str) – seismic model identifier (e.g., ‘PREM’, ‘mod1’). (default is None).
- filter(freq, freq2=0.0, type='lowpass', zerophase=False)¶
 Filter time-domain waveforms using obspy.signal.filter.
- Parameters
 freq (float) – filter frequency
freq2 (float) – filter maximum frequency (for bandpass filters only)
type (str) – type of filter (‘lowpass’, ‘bandpass’).
zerophase (bool) – use zero-phase filter (default is False).
- free()¶
 Free memory for the large fields self.us and self.ts.
Can be used after processing the time-domain waveform in cases where a large number of waveforms are used, which can quickly requires a lot of memory.
Examples: >>> output.to_time_domain() >>> # do some operations on output.us >>> output.free()
- get_nr()¶
 Returns the number of receivers (stations).
- get_traces()¶
 Return list of obspy.Trace.
- Returns
 traces
- Return type
 list ot obspy.Trace
- get_us_shape() -> (<class 'int'>, <class 'int'>, <class 'int'>)¶
 Return the shape of self.us (without doing FFT).
- static load(path)¶
 Read file into self using pickle.load().
- Parameters
 path (str) – name of the file that contains self.
- Returns
 the loaded PyDSMOutput object.
- Return type
 
- plot_component(component, windows=None, ax=None, align_zero=False, **kwargs)¶
 Plot waveforms for one seismic component.
- Parameters
 component (Component) – seismic component.
- Returns
 matplotlib figure object. Axes: matplotlib Axes object.
- Return type
 figure
- plot_spc(color='black', axes=None, distance_min=0.0, distance_max=inf, label=None, normalize='self')¶
 Plot a frequency-domain (spectra) record section.
- Parameters
 axes (matplotlib.axes) – ax on which to plot
distance_min (float) – minimum epicentral distance (deg)
distance_max (float) – maximum epicentral distance (deg)
label (str) – label for model name
normalize (str) – ‘self’ for self-normalization
'none' to see amplitude decay with distance (or) –
- Returns
 matplotlib figure object. Axes: matplotlib Axes object.
- Return type
 figure
- save(path)¶
 Save self using pickle.dump().
- Parameters
 path (str) – name of the output file.
- set_source_time_function(source_time_function)¶
 Set the source time function for convolution.
- Parameters
 source_time_function (SourceTimeFunction) – source time function object.
- to_time_domain(source_time_function=None)¶
 Compute time domain waveforms from spetcra.
- Parameters
 source_time_function (SourceTimeFunction) – source time function object (default is None).
- window_spcs(windows, window_width)¶
 Window the spectra in the frequency domain using gaussian windows to isolate portions of time-domain waveforms.
- Parameters
 windows (list of Window) – windows.
window_width (float) – duration (in seconds).
- Returns
 windowed PyDSMOutput object.
- Return type
 
- write(root_path, format)¶
 Write to file using obspy.io.write.
- Parameters
 root_path (str) – path of root folder in which to write.
format (str) – output files format (‘sac’).