obspy.core.stream.Stream.decimate
- Stream.decimate(factor, no_filter=False, strict_length=False)[source]
Downsample data in all traces of stream by an integer factor.
- Parameters:
Currently a simple integer decimation is implemented. Only every decimation_factor-th sample remains in the trace, all other samples are thrown away. Prior to decimation a lowpass filter is applied to ensure no aliasing artifacts are introduced. The automatic filtering can be deactivated with
no_filter=True
.If the length of the data array modulo
decimation_factor
is not zero then the end time of the trace is changing on sub-sample scale. To abort downsampling in case of changing end times setstrict_length=True
.Note
The
Stream
object has three different methods to change the sampling rate of its data:resample()
,decimate()
, andinterpolate()
Make sure to choose the most appropriate one for the problem at hand.
Note
This operation is performed in place on the actual data arrays. The raw data is not accessible anymore afterwards. To keep your original data, use
copy()
to create a copy of your stream object. This also makes an entry with information on the applied processing instats.processing
of every trace.Example
For the example we switch off the automatic pre-filtering so that the effect of the downsampling routine becomes clearer.
>>> from obspy import Trace, Stream >>> tr = Trace(data=np.arange(10)) >>> st = Stream(traces=[tr]) >>> tr.stats.sampling_rate 1.0 >>> tr.data array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> st.decimate(4, strict_length=False, no_filter=True) ... <...Stream object at 0x...> >>> tr.stats.sampling_rate 0.25 >>> tr.data array([0, 4, 8])