Window selection algorithm.
This module aims to provide a window selection algorithm suitable for calculating phase misfits between two seismic waveforms.
The main function is the select_windows() function. The selection process is a multi-stage process. Initially all time steps are considered to be valid in the sense as being suitable for window selection. Then a number of selectors is applied, progressively excluding more and more time steps.
|copyright:||Lion Krischer (firstname.lastname@example.org), 2013|
|license:||GNU General Public License, Version 3 (http://www.gnu.org/copyleft/gpl.html)|
For every value in target, find the index of ref_array to which the value is closest.
>>> ref_array = np.arange(0, 20.) >>> target = np.array([-2, 100., 2., 2.4, 2.5, 2.6]) >>> find_closest(ref_array, target) array([ 0, 19, 2, 2, 3, 3])
Function finding local extrema. It can also deal with flat extrema, e.g. a flat top or bottom. In that case the first index of all flat values will be returned.
Returns a tuple of maxima and minima indices.
Helper function enabling to loop over empty time windows.
select_windows(data_trace, synthetic_trace, event_latitude, event_longitude, event_depth_in_km, station_latitude, station_longitude, minimum_period, maximum_period, min_cc=0.1, max_noise=0.1, max_noise_window=0.4, min_velocity=2.4, threshold_shift=0.3, threshold_correlation=0.75, min_length_period=1.5, min_peaks_troughs=2, max_energy_ratio=10.0, min_envelope_similarity=0.2, verbose=False, plot=False)¶
Window selection algorithm for picking windows suitable for misfit calculation based on phase differences.
Returns a list of windows which might be empty due to various reasons.
This function is really long and a lot of things. For a more detailed description, please see the LASIF paper.
- data_trace (
Trace) – The data trace.
- synthetic_trace (
Trace) – The synthetic trace.
- event_latitude (float) – The event latitude.
- event_longitude (float) – The event longitude.
- event_depth_in_km (float) – The event depth in km.
- station_latitude (float) – The station latitude.
- station_longitude (float) – The station longitude.
- minimum_period (float) – The minimum period of the data in seconds.
- maximum_period (float) – The maximum period of the data in seconds.
- min_cc (float) – Minimum normalised correlation coefficient of the complete traces.
- max_noise (float) – Maximum relative noise level for the whole trace. Measured from maximum amplitudes before and after the first arrival.
- max_noise_window (float) – Maximum relative noise level for individual windows.
- min_velocity (float) – All arrivals later than those corresponding to the threshold velocity [km/s] will be excluded.
- threshold_shift (float) – Maximum allowable time shift within a window, as a fraction of the minimum period.
- threshold_correlation (float) – Minimum normalised correlation coeeficient within a window.
- min_length_period (float) – Minimum length of the time windows relative to the minimum period.
- min_peaks_troughs (float) – Minimum number of extrema in an individual time window (excluding the edges).
- max_energy_ratio (float) – Maximum energy ratio between data and synthetics within a time window. Don’t make this too small!
- min_envelope_similarity (float) – The minimum similarity of the envelopes of both data and synthetics. This essentially assures that the amplitudes of data and synthetics can not diverge too much within a window. It is a bit like the inverse of the ratio of both envelopes so a value of 0.2 makes sure neither amplitude can be more then 5 times larger than the other.
- verbose (bool) – No output by default.
- plot (bool) – Create a plot of the algortihm while it does its work.
- data_trace (