示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)