def test_resampled(self): original_frequency = Milliseconds(500) original_duration = Seconds(1) ratio = 0.02 orig_sr = SampleRate(original_frequency, original_duration) new_sr = orig_sr.resample(ratio) self.assertEqual(Milliseconds(10), new_sr.frequency) self.assertEqual(Milliseconds(20), new_sr.duration)
def test_can_produce_time_slice_iterable_from_timestamps(self): slices = TimeSlice.slices([Seconds(1), Milliseconds(1), Seconds(2)]) self.assertEqual(2, len(slices)) self.assertEqual( TimeSlice(start=Milliseconds(1), duration=Milliseconds(999)), slices[0]) self.assertEqual(TimeSlice(start=Seconds(1), duration=Seconds(1)), slices[1])
def test_frequency_less_than_one(self): arr = np.arange(10) freq = Milliseconds(500) ts = ArrayWithUnits(arr, [TimeDimension(freq)]) sl = TimeSlice(Seconds(2), start=Milliseconds(600)) ts2 = ts[sl] self.assertIsInstance(ts2, ArrayWithUnits) self.assertEqual(5, ts2.size) self.assertTrue(np.all(np.arange(1, 6) == ts2))
def test_time_slice_spanning_multiple_samples_returns_all_samples(self): arr = np.arange(10) freq = Seconds(1) ts = ArrayWithUnits(arr, [TimeDimension(freq)]) sl = TimeSlice(Milliseconds(2000), start=Milliseconds(1500)) ts2 = ts[sl] self.assertIsInstance(ts2, ArrayWithUnits) self.assertEqual(3, ts2.size) self.assertTrue(np.all(np.arange(1, 4) == ts2))
def test_time_slice_spanning_less_than_one_sample_returns_one_sample(self): arr = np.arange(10) freq = Seconds(1) ts = ArrayWithUnits(arr, [TimeDimension(freq)]) sl = TimeSlice(Milliseconds(100), start=Milliseconds(1500)) ts2 = ts[sl] self.assertIsInstance(ts2, ArrayWithUnits) self.assertEqual(1, ts2.size) self.assertEqual(1, ts2[0])
def test_duration_less_than_frequency(self): arr = np.arange(10) freq = Seconds(1) duration = Milliseconds(500) ts = ArrayWithUnits(arr, [TimeDimension(freq, duration)]) sl = TimeSlice(Seconds(3), start=Milliseconds(1250)) ts2 = ts[sl] self.assertIsInstance(ts2, ArrayWithUnits) self.assertEqual(4, ts2.size) self.assertTrue(np.all(np.arange(1, 5) == ts2))
def test_frequency_less_than_one_freq_and_duration_differ(self): arr = np.arange(10) freq = Milliseconds(500) duration = Seconds(1) ts = ArrayWithUnits(arr, [TimeDimension(freq, duration)]) sl = TimeSlice(Seconds(3), start=Milliseconds(250)) ts2 = ts[sl] self.assertIsInstance(ts2, ArrayWithUnits) self.assertEqual(7, ts2.size) self.assertTrue(np.all(np.arange(0, 7) == ts2))
def test_time_slice_spanning_less_than_one_example_returns_one_example( self): ts = VariableRateTimeSeries(( (TimeSlice(start=Seconds(0), duration=Seconds(1)), np.zeros(10)), (TimeSlice(start=Seconds(1), duration=Seconds(2)), np.zeros(10)), (TimeSlice(start=Seconds(3), duration=Seconds(1)), np.zeros(10)) )) timeslice = TimeSlice( start=Milliseconds(500), duration=Milliseconds(100)) sliced = ts[timeslice] self.assertIsInstance(sliced, VariableRateTimeSeries) self.assertEqual(1, len(sliced))
def test_can_get_entire_time_series_with_empty_slice(self): arr = np.arange(10) freq = Seconds(1) duration = Milliseconds(500) ts = ArrayWithUnits(arr, [TimeDimension(freq, duration)]) ts2 = ts[:] self.assertIsInstance(ts2, ArrayWithUnits) self.assertTrue(np.all(np.arange(10) == ts2))
def test_discrete_samples_multiple_dimensions(self): sr = SR22050() samples = SilenceSynthesizer(sr).synthesize(Milliseconds(6666)) stacked = ArrayWithUnits( np.zeros((10, ) + samples.shape, dtype=samples.dtype), (IdentityDimension(), ) + samples.dimensions) stacked[:] = samples self.assertEqual((512, 1024), HalfLapped().discrete_samples(stacked))
def test_equivalent_timeslices_hash_to_the_same_value(self): ts1 = TimeSlice(start=Seconds(1), duration=Seconds(7)) ts2 = TimeSlice(start=Milliseconds(1000), duration=Milliseconds(7000)) self.assertEqual(hash(ts1), hash(ts2))
def test_overlap_ratio_half(self): sr = SampleRate(frequency=Milliseconds(500), duration=Seconds(1)) self.assertEqual(0.5, sr.overlap_ratio)
def test_equals(self): td1 = TimeDimension(Seconds(1), Milliseconds(900)) td2 = TimeDimension(Seconds(1), Milliseconds(900)) self.assertEqual(td1, td2)
def test_overlap_ratio_type(self): sr = SampleRate(frequency=Milliseconds(500), duration=Seconds(1)) self.assertIsInstance(sr.overlap_ratio, float)
def test_different_units_equal(self): self.assertEqual(Seconds(1), Milliseconds(1000))
def test_samplerate_three_per_second(self): arr = np.arange(10) freq = Milliseconds(333) ts = ArrayWithUnits(arr, [TimeDimension(freq)]) self.assertEqual(3, int(ts.dimensions[0].samples_per_second))
def test_duration_in_seconds_half_second(self): arr = np.arange(10) freq = Milliseconds(500) ts = ArrayWithUnits(arr, [TimeDimension(freq)]) self.assertEqual(0.5, ts.dimensions[0].duration_in_seconds)
def test_span_duration_less_than_frequency(self): arr = np.arange(10) freq = Seconds(1) duration = Milliseconds(500) ts = ArrayWithUnits(arr, [TimeDimension(freq, duration)]) self.assertEqual(TimeSlice(Milliseconds(9500)), ts.dimensions[0].span)
def test_milliseconds_equal(self): a = Milliseconds(1000) b = np.timedelta64(1000, 'ms') self.assertEqual(a, b)