def test_remove_noncontiguous(self): tb1 = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tb2 = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tb3 = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) # nonzero signal mean tsd1 = TimeseriesData(timebase=tb1, signal=Signal(np.arange(len(tb1))), channels=ChannelList(Channel('ch_01',Coords('dummy',(0,0,0))))) tsd2 = TimeseriesData(timebase=tb2, signal=Signal(np.arange(len(tb2))), channels=ChannelList(Channel('ch_01',Coords('dummy',(0,0,0))))) tsd3 = TimeseriesData(timebase=tb3, signal=Signal(np.arange(len(tb3))), channels=ChannelList(Channel('ch_01',Coords('dummy',(0,0,0))))) self.assertTrue(tb1.is_contiguous()) self.assertTrue(tb2.is_contiguous()) self.assertTrue(tb3.is_contiguous()) tsd2.timebase[-50:] += 1.0 self.assertFalse(tb2.is_contiguous()) ds = DataSet('ds') for tsd in [tsd1, tsd2, tsd3]: ds.add(tsd) for tsd in [tsd1, tsd2, tsd3]: self.assertTrue(tsd in ds) filtered_ds = ds.remove_noncontiguous() for tsd in [tsd1, tsd3]: self.assertTrue(tsd in filtered_ds) self.assertFalse(tsd2 in filtered_ds)
def fetch(self): tb = generate_timebase(t0=float(self.t0), n_samples=int(self.n_samples), sample_freq=float(self.sample_freq)) sig = Signal(float(self.shot) * sin(2 * pi * float(self.frequency) * tb)) dummy_channel = Channel("ch_01", Coords("dummy", (0, 0, 0))) output_data = TimeseriesData(timebase=tb, signal=sig, channels=ChannelList(dummy_channel)) output_data.meta.update({"shot": self.shot}) return output_data
def test_multi_channel_timeseries(self): tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tsd = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(3*len(tb)), (3,len(tb)))), channels=get_n_channels(3)) seg_dataset = tsd.segment(n_samples=10) self.assertTrue(len(seg_dataset)==10)
def test_timebase(self): t0=0.3 n_samples=500 sample_freq=1.e6 test_tb = generate_timebase(t0=t0,n_samples=n_samples, sample_freq=sample_freq) local_tb = np.arange(t0, t0+n_samples/sample_freq, 1./sample_freq) self.assertTrue((test_tb == local_tb).all()) self.assertAlmostEqual(test_tb.sample_freq, sample_freq, 4)
def test_remove_mean_single_channel(self): tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) # nonzero signal mean tsd = TimeseriesData(timebase=tb, signal=Signal(np.arange(len(tb))), channels=ChannelList(Channel('ch_01',Coords('dummy',(0,0,0))))) filtered_tsd = tsd.subtract_mean() assert_almost_equal(np.mean(filtered_tsd.signal), 0)
def test_timebase_slice(self): t0=0.3 n_samples=500 sample_freq=1.e6 test_tb = generate_timebase(t0=t0,n_samples=n_samples, sample_freq=sample_freq) self.assertTrue(hasattr(test_tb, 'sample_freq')) sliced_tb = test_tb[:10] self.assertTrue(hasattr(sliced_tb, 'sample_freq'))
def fetch(self): tb = generate_timebase(t0=float(self.t0), n_samples=int(self.n_samples), sample_freq=float(self.sample_freq)) sig = Signal( float(self.amplitude) * sin(2 * pi * float(self.frequency) * tb)) dummy_channel = Channel('ch_01', Coords('dummy', (0, 0, 0))) output_data = TimeseriesData(timebase=tb, signal=sig, channels=ChannelList(dummy_channel)) output_data.meta.update({'shot': self.shot}) return output_data
def test_reduce_time_dataset(self): new_times = [-0.25, 0.25] tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tsd_1 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(5*len(tb)),(5,len(tb)))), channels=get_n_channels(5)) tsd_2 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(5*len(tb))+1,(5,len(tb)))), channels=get_n_channels(5)) test_dataset = DataSet('test_dataset') test_dataset.add(tsd_1) test_dataset.add(tsd_2) test_dataset.reduce_time(new_times)
def test_dataset(self): tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tsd_1 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(3*len(tb)), (3,len(tb)))), channels=get_n_channels(3)) tsd_2 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(3*len(tb)+1),(3,len(tb)))), channels=get_n_channels(3)) input_dataset = DataSet('test_dataset') input_dataset.add(tsd_1) input_dataset.add(tsd_2) seg_dataset = input_dataset.segment(n_samples=10) self.assertTrue(len(seg_dataset)==20)
def test_reduce_time_filter_multi_channel_attached_method(self): new_times = [-0.25, 0.25] tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tsd = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(5*len(tb)),(5,len(tb)))), channels=get_n_channels(5)) new_time_args = np.searchsorted(tb, new_times) timebase_test = tsd.timebase[new_time_args[0]:new_time_args[1]].copy() signal_test = tsd.signal[:,new_time_args[0]:new_time_args[1]].copy() reduced_tsd = tsd.reduce_time(new_times) self.assertTrue(isinstance(reduced_tsd, TimeseriesData)) assert_array_almost_equal(reduced_tsd.timebase, timebase_test) assert_array_almost_equal(reduced_tsd.signal, signal_test)
def test_dataset(self): ch=get_n_channels(5) new_times = [-0.25, 0.25] tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) tsd_1 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(5*len(tb)),(5,len(tb)))), channels=ch) tsd_2 = TimeseriesData(timebase=tb, signal=Signal(np.resize(np.arange(5*len(tb))+1, (5,len(tb)))), channels=ch) test_dataset = DataSet('test_ds_1') test_dataset.add(tsd_1) test_dataset.add(tsd_2) self.assertTrue(tsd_1 in test_dataset) """
def testFilteredDataHistory_nocopy(self): tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) # nonzero signal mean ch = get_n_channels(1) tsd = TimeseriesData(timebase=tb, signal=Signal(np.arange(len(tb))), channels=ch) filtered_tsd = tsd.subtract_mean() #self.assertEqual(len(filtered_tsd.history.split('\n')), 3) self.assertEqual(len(filtered_tsd.history.split('\n')), 5) # bdb thinks extra 2 is OK output_data = filtered_tsd.normalise(method='rms', copy=False) #self.assertEqual(filtered_tsd.history.split('> ')[-1], "normalise(method='rms')") self.assertEqual(filtered_tsd.history.split('> ')[-1].split('\n')[0], "normalise(method='rms')") #self.assertEqual(output_data.history.split('> ')[-1], "normalise(method='rms')") self.assertEqual(output_data.history.split('> ')[-1].split('\n')[0], "normalise(method='rms')")
def testFilteredDataHistory_copy(self): """ make sure that _copy version does NOT alter original """ tb = generate_timebase(t0=-0.5, n_samples=1.e2, sample_freq=1.e2) # nonzero signal mean ch = get_n_channels(1) tsd = TimeseriesData(timebase=tb, signal=Signal(np.arange(len(tb))), channels=ch) filtered_tsd = tsd.subtract_mean() # bdb in 4 places, assume that the xtra info (norm_value) is supposed to be there. #self.assertEqual(len(filtered_tsd.history.split('\n')), 3) self.assertEqual(len(filtered_tsd.history.split('\n')), 5) # bdb thinks extra 2 is OK output_data = filtered_tsd.normalise(method='rms', copy=True) #self.assertEqual(output_data.history.split('> ')[-1], "normalise(method='rms')") self.assertEqual(output_data.history.split('> ')[-1].split('\n')[0], "normalise(method='rms')") #self.assertEqual(filtered_tsd.history.split('> ')[-1], "subtract_mean()") self.assertEqual(filtered_tsd.history.split('> ')[-1].split('\n')[0], "subtract_mean()")