# -*- coding: utf-8 -*-
"""
Optional feature generators for ObsPy Trace objects.
:copyright:
The ObsPy Development Team (devs@obspy.org)
:license:
GNU Lesser General Public License, Version 3
(https://www.gnu.org/copyleft/lesser.html)
"""
from obspy.core.util import score_at_percentile
[docs]class BandpassPreviewFeature(object):
"""
Bandpass filter (freqmin=0.1, freqmax=20.0) all trace previews.
"""
[docs] def process(self, trace):
"""
Bandpass filter (freqmin=0.1, freqmax=20.0) all trace previews.
"""
# applying bandpass on trace directly - this will not modify the
# original waveform file but it will influence the preview trace
trace.filter("bandpass", freqmin=0.1, freqmax=20.0)
return {}
[docs]class MinMaxAmplitudeFeature(object):
"""
Generates statistics about the amplitude values.
"""
[docs] def process(self, trace):
"""
Generates statistics about the amplitude values.
This may take a while to calculate - use a moderate looping interval.
"""
result = {}
result['min'] = float(trace.data.min())
result['max'] = float(trace.data.max())
result['avg'] = float(trace.data.mean())
result['median'] = float(score_at_percentile(trace.data, 50, False))
result['lower_quantile'] = float(score_at_percentile(trace.data, 25))
result['upper_quantile'] = float(score_at_percentile(trace.data, 75))
return result
if __name__ == '__main__':
import doctest
doctest.testmod(exclude_empty=True)