def test_perf(): """ Performances measurement on full EDF """ # Prepare list of TS ts_list_origin = IkatsApi.ds.read(ds_name="EDF")["ts_list"] md_list = IkatsApi.md.read(ts_list=ts_list_origin) results = None ts_start = 0 ts_end = len(ts_list_origin) + 1 for i in range(ts_start + 1, ts_end): for save in [False, True]: ts_list = ts_list_origin[ts_start:i] time_before = time.time() # Compute results = compute_slope(ts_list=ts_list, save_new_ts=save) time_after = time.time() nb_points = sum([ int(md_list[x]['qual_nb_points']) for x in md_list if x in ts_list ]) print( "PERF %s TS, %s pts, save=%s in %ss (speed: %.2f pts/s)" % (len(ts_list), nb_points, save, (time_after - time_before), nb_points / (time_after - time_before))) print(results)
def test_slope_same_ts(self): """ Compute the slope of a 2 TS """ # Defining default results (for cleanup purposes) results = None # Prepare list of identical TS ts_item = gen_ts(1) ts_list = [ts_item, ts_item] try: # Compute results = compute_slope(ts_list=ts_list) # Get computed data obtained_timeseries_data_1 = IkatsApi.ts.read( tsuid_list=[results[0]['tsuid']])[0] obtained_timeseries_data_2 = IkatsApi.ts.read( tsuid_list=[results[1]['tsuid']])[0] # Same number of TS generated self.assertEqual(len(ts_list), len(results)) # Computed TSUID are identical (because they have the same functional identifier) self.assertEqual(results[0]['tsuid'], results[1]['tsuid']) # Compare values self.assertTrue( np.allclose(np.array(expected_ts(1), dtype=np.float64), np.array(obtained_timeseries_data_1, dtype=np.float64), atol=1e-2)) self.assertTrue( np.allclose(np.array(expected_ts(1), dtype=np.float64), np.array(obtained_timeseries_data_2, dtype=np.float64), atol=1e-2)) finally: for timeseries in ts_list: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True) if results is not None: for timeseries in results: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True)
def test_slope_simple(self): """ Compute the slope of a simple TS * Going up * Going down * Constant """ # Defining default results (for cleanup purposes) results = None # Prepare list of TS ts_list = [gen_ts(1)] try: # Compute results = compute_slope(ts_list=ts_list) # Get computed data obtained_timeseries_data = IkatsApi.ts.read( tsuid_list=[results[0]['tsuid']])[0] # Same number of TS generated self.assertEqual(len(ts_list), len(results)) # Compare length self.assertEqual(len(expected_ts(1)), len(obtained_timeseries_data)) # Compare values self.assertTrue( np.allclose(np.array(expected_ts(1), dtype=np.float64), np.array(obtained_timeseries_data, dtype=np.float64), atol=1e-2)) finally: for timeseries in ts_list: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True) if results is not None: for timeseries in results: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True)
def test_slope_special_chunk(self): """ Compute the slope of a TS having chunks containing: * no points * 1 single point * several points * last chunk has one point """ # Defining default results (for cleanup purposes) results = None # Prepare list of TS ts_list = [gen_ts(3)] try: # Compute results = compute_slope(ts_list=ts_list, chunk_size=4) # Get computed data obtained_timeseries_data = IkatsApi.ts.read( tsuid_list=[results[0]['tsuid']])[0] # Same number of TS generated self.assertEqual(len(ts_list), len(results)) # Compare values self.assertTrue( np.allclose(np.array(expected_ts(3), dtype=np.float64), np.array(obtained_timeseries_data, dtype=np.float64), atol=1e-2)) finally: for timeseries in ts_list: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True) if results is not None: for timeseries in results: IkatsApi.ts.delete(timeseries['tsuid'], no_exception=True)