4.7.1.1. eqcorrscan.utils.mag_calc.amp_pick_event¶
-
eqcorrscan.utils.mag_calc.
amp_pick_event
(event, st, respdir, chans=['Z'], var_wintype=True, winlen=0.9, pre_pick=0.2, pre_filt=True, lowcut=1.0, highcut=20.0, corners=4, min_snr=1.0, plot=False, remove_old=False)[source]¶ Pick amplitudes for local magnitude for a single event.
Looks for maximum peak-to-trough amplitude for a channel in a stream, and picks this amplitude and period. There are a few things it does internally to stabilise the result:
1. Applies a given filter to the data - very necessary for small magnitude earthquakes;
2. Keeps track of the poles and zeros of this filter and removes them from the picked amplitude;
3. Picks the peak-to-trough amplitude, but records half of this: the specification for the local magnitude is to use a peak amplitude on a horizontal, however, with modern digital seismometers, the peak amplitude often has an additional, DC-shift applied to it, to stabilise this, and to remove possible issues with de-meaning data recorded during the wave-train of an event (e.g. the mean may not be the same as it would be for longer durations), we use half the peak-to-trough amplitude;
4. Despite the original definition of local magnitude requiring the use of a horizontal channel, more recent work has shown that the vertical channels give more consistent magnitude estimations between stations, due to a reduction in site-amplification effects, we therefore use the vertical channels by default, but allow the user to chose which channels they deem appropriate;
5. We do not specify that the maximum amplitude should be the S-phase: The original definition holds that the maximum body-wave amplitude should be used - while this is often the S-phase, we do not discriminate against the P-phase. We do note that, unless the user takes care when assigning winlen and filters, they may end up with amplitude picks for surface waves;
6. We use a variable window-length by default that takes into account P-S times if available, this is in an effort to include only the body waves. When P-S times are not available we hard-wire a P-S at 0.34 x hypocentral distance.
Parameters: - event (obspy.core.event.event.Event) Event to pick
- st (obspy.core.stream.Stream) Stream associated with event
- respdir (str) Path to the response information directory
- chans (list) List of the channels to pick on, defaults to [‘Z’] - should just be the orientations, e.g. Z,1,2,N,E
- var_wintype (bool) If True, the winlen will be multiplied by the P-S time if both P and S picks are available, otherwise it will be multiplied by the hypocentral distance*0.34 - derived using a p-s ratio of 1.68 and S-velocity of 1.5km/s to give a large window, defaults to True
- winlen (float) Length of window, see above parameter, if var_wintype is False then this will be in seconds, otherwise it is the multiplier to the p-s time, defaults to 0.5.
- pre_pick (float) Time before the s-pick to start the cut window, defaults to 0.2
- pre_filt (bool) To apply a pre-filter or not, defaults to True
- lowcut (float) Lowcut in Hz for the pre-filter, defaults to 1.0
- highcut (float) Highcut in Hz for the pre-filter, defaults to 20.0
- corners (int) Number of corners to use in the pre-filter
- min_snr (float) Minimum signal-to-noise ratio to allow a pick - see note below on signal-to-noise ratio calculation.
- plot (bool) Turn plotting on or off.
- remove_old (bool) If True, will remove old amplitude picks from event and overwrite with new picks. Defaults to False.
Returns: Picked event
Return type: obspy.core.event.Event
Note
Signal-to-noise ratio is calculated using the filtered data by dividing the maximum amplitude in the signal window (pick window) by the normalized noise amplitude (taken from the whole window supplied).