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