def test_unwrap_ts_many_chunks(self): """ Nominal test forcing several chunks Check the chunks of TS are combined properly into the final TS """ # Create test timeseries fid = "UT_Unwrap_many_chunks" discontinuity = 180 pattern_to_use = np.array([-180, -90, 0, 90, 180]) splits = 3 # Generated TS has (2+1)*5 points tsuid, generated_nb_points = generate_ts(fid=fid, splits=splits, pattern=pattern_to_use) # Create expected result expected_points = calc_expected_ts(splits=splits, pattern=pattern_to_use, phase=discontinuity) fid_pattern = "%(fid)s__unwrap" try: # Call algorithm # Force a small chunk_size to have several chunks (chunk_size=3, instead of 75000 by default) results, _ = unwrap_tsuid(tsuid=tsuid, unit=TSUnit.Degrees, discontinuity=discontinuity, fid_pattern=fid_pattern, chunk_size=3) # Get results obtained_points = IkatsApi.ts.read(tsuid_list=[results["tsuid"]])[0] # Check results self.assertEqual(generated_nb_points, len(obtained_points)) self.assertTrue(np.allclose( expected_points.astype(float), obtained_points.astype(float) )) except AssertionError: raise finally: # Clear Data # Delete the TS IkatsApi.ts.delete(tsuid=tsuid, no_exception=True) # Delete the result TS IkatsApi.ts.delete(tsuid=IkatsApi.fid.tsuid(fid=fid_pattern % ({'fid': fid})), no_exception=True)
def test_unwrap_ts_many_splits(self): """ Nominal test using a timeseries composed of many discontinuities (5000) Check the successive discontinuities doesn't alter the result """ # Create test timeseries : (splits+1) * num items fid = "UT_Unwrap_many_splits" discontinuity = 180 pattern_to_use = np.linspace(-180, 180, 5) splits = 5000 # Generated TS has (5000+1)*5 points tsuid, generated_nb_points = generate_ts(fid=fid, splits=splits, pattern=pattern_to_use) # Create expected result expected_points = calc_expected_ts(splits=splits, pattern=pattern_to_use, phase=discontinuity, period=1000) fid_pattern = "%(fid)s__unwrap" try: # Call algorithm results, timings = unwrap_tsuid(tsuid=tsuid, unit=TSUnit.Degrees, discontinuity=discontinuity, fid_pattern=fid_pattern) # Get results obtained_points = IkatsApi.ts.read(tsuid_list=[results["tsuid"]])[0] # Check results self.assertEqual(generated_nb_points, len(obtained_points)) self.assertTrue(np.allclose( expected_points.astype(float), obtained_points.astype(float) )) LOGGER.info('Stats :%s', timings.stats()) except AssertionError: raise finally: # Clear Data # Delete the TS IkatsApi.ts.delete(tsuid=tsuid, no_exception=True) # Delete the result TS IkatsApi.ts.delete(tsuid=IkatsApi.fid.tsuid(fid=fid_pattern % ({'fid': fid})), no_exception=True)
def test_unwrap_tsuid_degrees(self): """ Nominal test using degrees values Check the degrees series are well handled """ # Create test timeseries fid = "UT_Unwrap_degrees" discontinuity = 180 pattern_to_use = np.array([-180, -90, 0, 90, 180]) splits = 2 # Generated TS has (2+1)*5 points tsuid, generated_nb_points = generate_ts(fid=fid, splits=splits, pattern=pattern_to_use) # Create expected result expected_points = calc_expected_ts(splits=splits, pattern=pattern_to_use, phase=discontinuity) fid_pattern = "%(fid)s__unwrap" try: # Call algorithm results, _ = unwrap_tsuid(tsuid=tsuid, unit=TSUnit.Degrees, discontinuity=discontinuity, fid_pattern=fid_pattern) # Get results obtained_points = IkatsApi.ts.read(tsuid_list=[results["tsuid"]])[0] # Check results self.assertEqual(generated_nb_points, len(obtained_points)) self.assertTrue(np.allclose( expected_points.astype(float), obtained_points.astype(float) )) except AssertionError: raise finally: # Clear Data # Delete the TS IkatsApi.ts.delete(tsuid=tsuid, no_exception=True) # Delete the result TS IkatsApi.ts.delete(tsuid=IkatsApi.fid.tsuid(fid=fid_pattern % ({'fid': fid})), no_exception=True)
def test_unwrap_ts_single_point(self): """ Nominal test using radian values with only one point Check a TS having 1 point doesn't produce error """ # Create test timeseries fid = "UT_Unwrap_single" discontinuity = pi pattern_to_use = np.array([42]) splits = 0 # Generated TS has 1 point tsuid, generated_nb_points = generate_ts(fid=fid, splits=splits, pattern=pattern_to_use) # Create expected result expected_points = calc_expected_ts(splits=splits, pattern=pattern_to_use, phase=discontinuity, period=1000) fid_pattern = "%(fid)s__unwrap" try: # Call algorithm results, _ = unwrap_tsuid(tsuid=tsuid, unit=TSUnit.Radians, discontinuity=discontinuity, fid_pattern=fid_pattern) # Get results obtained_points = IkatsApi.ts.read(tsuid_list=[results["tsuid"]])[0] # Check results self.assertEqual(generated_nb_points, len(obtained_points)) self.assertTrue(np.allclose( expected_points.astype(float), obtained_points.astype(float) )) except AssertionError: raise finally: # Clear Data # Delete the TS IkatsApi.ts.delete(tsuid=tsuid, no_exception=True) # Delete the result TS IkatsApi.ts.delete(tsuid=IkatsApi.fid.tsuid(fid=fid_pattern % ({'fid': fid})), no_exception=True)