obspy.signal.cross_correlation.correlation_detector¶
- correlation_detector(stream, templates, heights, distance, template_times=None, template_magnitudes=None, template_names=None, similarity_func=<function _calc_mean at 0x46bfedf4>, details=None, plot=None, **kwargs)[source]¶
Detector based on the cross-correlation of waveforms.
This detector cross-correlates the stream with each of the template streams (compare with correlate_stream_template()). A similarity is defined, by default it is the mean of all cross-correlation functions for each template. If the similarity exceeds the height threshold a detection is triggered. This peak finding utilizes the SciPy function find_peaks() with parameters height and distance. For a SciPy version smaller than 1.1 it uses a custom function for peak finding.
Parameters: - stream Stream with data traces.
- templates List of streams with template traces. Each template stream should be shorter than the data stream. This argument can also be a single template stream.
- heights Similarity values to trigger a detection, one for each template. This argument can also be a single value.
- distance The distance in seconds between two detections.
- template_times UTCDateTimes associated with template event (e.g. origin times, default are the start times of the template streams). This argument can also be a single value.
- template_magnitudes Magnitudes of the template events. If provided, amplitude ratios between templates and detections will be calculated and the magnitude of detections will be estimated. This argument can also be a single value. This argument can be set to True, then only amplitude ratios will be calculated.
- template_names List of template names, the corresponding template name will be inserted into the detection.
- similarity_func By default, the similarity will be calculated by the mean of cross-correlations. If provided, similarity_func will be called with the stream of cross correlations and the returned trace will be used as similarity. See the tutorial for an example.
- details If set to True detections include detailed information.
- plot Plot detections together with the data of the supplied stream. The default plot=None does not plot anything. plot=True plots the similarity traces together with the detections. If a stream is passed as argument, the traces in the stream will be plotted together with the similarity traces and detections.
- kwargs Suitable kwargs are passed to correlate_template() function. All other kwargs are passed to find_peaks().
Returns: List of event detections sorted chronologically and list of similarity traces - one for each template. Each detection is a dictionary with the following keys: time, similarity, template_id, amplitude_ratio, magnitude (if template_magnitudes is provided), template_name (if template_names is provided), cross-correlation values, properties returned by find_peaks (if details are requested)
Example
>>> from obspy import read, UTCDateTime >>> data = read().filter('highpass', freq=5) >>> pick = UTCDateTime('2009-08-24T00:20:07.73') >>> template = data.slice(pick, pick + 10) >>> detections, sims = correlation_detector(data, template, 0.5, 10) >>> print(detections) [{'time': UTCDateTime(2009, 8, 24, 0, 20, 7, 730000), 'similarity': 0.99999999999999944, 'template_id': 0}]
A more advanced tutorial is available.