def test_slice(self): """ Tests the slicing of trace objects. """ tr = Trace(data=np.arange(10, dtype='int32')) mempos = tr.data.ctypes.data t = tr.stats.starttime tr1 = tr.slice(t + 2, t + 8) tr1.data[0] = 10 self.assertEqual(tr.data[2], 10) self.assertEqual(tr.data.ctypes.data, mempos) self.assertEqual(tr.data[2:9].ctypes.data, tr1.data.ctypes.data) self.assertEqual(tr1.data.ctypes.data - 8, mempos)
def test_issue317(self): """ Tests times after breaking a stream into parts and merging it again. """ # create a sample trace org_trace = Trace(data=np.arange(22487)) org_trace.stats.starttime = UTCDateTime() org_trace.stats.sampling_rate = 0.999998927116 num_pakets = 10 # break org_trace into set of contiguous packet data traces = [] packet_length = int(np.size(org_trace.data) / num_pakets) delta_time = org_trace.stats.delta tstart = org_trace.stats.starttime tend = tstart + delta_time * float(packet_length - 1) for i in range(num_pakets): tr = Trace(org_trace.data, org_trace.stats) tr = tr.slice(tstart, tend) traces.append(tr) tstart = tr.stats.endtime + delta_time tend = tstart + delta_time * float(packet_length - 1) # reconstruct original trace by adding together packet traces sum_trace = traces[0].copy() npts = traces[0].stats.npts for i in range(1, len(traces)): sum_trace = sum_trace.__add__(traces[i].copy(), method=0, interpolation_samples=0, fill_value='latest', sanity_checks=True) # check npts self.assertEquals(traces[i].stats.npts, npts) self.assertEquals(sum_trace.stats.npts, (i + 1) * npts) # check data np.testing.assert_array_equal(traces[i].data, np.arange(i * npts, (i + 1) * npts)) np.testing.assert_array_equal(sum_trace.data, np.arange(0, (i + 1) * npts)) # check delta self.assertEquals(traces[i].stats.delta, org_trace.stats.delta) self.assertEquals(sum_trace.stats.delta, org_trace.stats.delta) # check sampling rates self.assertAlmostEquals(traces[i].stats.sampling_rate, org_trace.stats.sampling_rate) self.assertAlmostEquals(sum_trace.stats.sampling_rate, org_trace.stats.sampling_rate) # check endtimes self.assertEquals(traces[i].stats.endtime, sum_trace.stats.endtime)