obspy.core.util.testing.streams_almost_equal
- streams_almost_equal(st1, st2, default_stats=True, rtol=1e-05, atol=1e-08, equal_nan=True)[source]
Return True if two streams are almost equal.
- Parameters:
st1 – The first
Stream
object.st2 – The second
Stream
object.default_stats – If True only compare the default stats on the traces, such as seed identification codes, start/end times, sampling_rates, etc. If False also compare extra stats attributes such as processing and format specific information.
rtol – The relative tolerance parameter passed to
allclose()
for comparing time series.atol – The absolute tolerance parameter passed to
allclose()
for comparing time series.equal_nan – If
True
NaNs are evaluated equal when comparing the time series.
- Returns:
bool
Example
- Changes to the non-default parameters of the
Stats
objects of the stream’s containedTrace
objects will cause the streams to be considered unequal, but they will be considered almost equal.>>> from obspy import read >>> st1 = read() >>> st2 = read() >>> # The traces should, of course, be equal. >>> assert st1 == st2 >>> # Perform detrending on st1 twice so processing stats differ. >>> st1 = st1.detrend('linear') >>> st1 = st1.detrend('linear') >>> st2 = st2.detrend('linear') >>> # The traces are no longer equal, but are almost equal. >>> assert st1 != st2 >>> assert streams_almost_equal(st1, st2)
- Slight differences in each trace’s data will cause the streams
to be considered unequal, but they will be almost equal if the differences don’t exceed the limits set by the
rtol
andatol
parameters.>>> from obspy import read >>> st1 = read() >>> st2 = read() >>> # Perturb the trace data in st2 slightly. >>> for tr in st2: ... tr.data *= (1 + 1e-6) >>> # The streams are no longer equal. >>> assert st1 != st2 >>> # But they are almost equal. >>> assert streams_almost_equal(st1, st2) >>> # Unless, of course, there is a large change. >>> st1[0].data *= 10 >>> assert not streams_almost_equal(st1, st2)