def test_RTS(self, fig=100, verbose=2):
        data = generate_RTS_signal(100, std_gaussian_noise=0.1, uniform_noise=.1)

        samplerate = 2e6
        data = generate_RTS_signal(100000, std_gaussian_noise=0.1, rate_up=10e3, rate_down=20e3, samplerate=samplerate)

        with warnings.catch_warnings():  # catch any warnings
            warnings.simplefilter("ignore")
            tunnelrate_dn, tunnelrate_up, parameters = tunnelrates_RTS(data, samplerate=samplerate, fig=fig,
                                                                       verbose=verbose)

            self.assertTrue(parameters['up_segments']['mean'] > 0)
            self.assertTrue(parameters['down_segments']['mean'] > 0)

        samplerate = 1e6
        rate_up = 200e3
        rate_down = 20e3
        data = generate_RTS_signal(100000, std_gaussian_noise=0.01, rate_up=rate_up,
                                   rate_down=rate_down, samplerate=samplerate)

        tunnelrate_dn, tunnelrate_up, _ = tunnelrates_RTS(data, samplerate=samplerate, min_sep=1.0, max_sep=2222,
                                                          min_duration=1, num_bins=40, fig=fig, verbose=verbose)

        self.assertTrue(np.abs(tunnelrate_dn - rate_up * 1e-3) < 100)
        self.assertTrue(np.abs(tunnelrate_up - rate_down * 1e-3) < 10)
        plt.close('all')
예제 #2
0
    def test_RTS(self, fig=None, verbose=0):
        data = np.random.rand(10000, )
        try:
            _ = tunnelrates_RTS(data)
            raise Exception('no samplerate available')
        except ValueError as ex:
            # exception is good, since no samplerate was provided
            self.assertTrue(
                'samplerate should be set to the data samplerate' in str(ex))
        try:
            _ = tunnelrates_RTS(data, samplerate=10e6)
            raise Exception('data should not fit to RTS')
        except FittingException as ex:
            # fitting exception is good, since data is random
            pass

        data = generate_RTS_signal(100, std_gaussian_noise=0, uniform_noise=.1)
        data = generate_RTS_signal(100,
                                   std_gaussian_noise=0.1,
                                   uniform_noise=.1)

        samplerate = 2e6
        data = generate_RTS_signal(100000,
                                   std_gaussian_noise=0.1,
                                   rate_up=10e3,
                                   rate_down=20e3,
                                   samplerate=samplerate)

        with warnings.catch_warnings():  # catch any warnings
            warnings.simplefilter("ignore")
            tunnelrate_dn, tunnelrate_up, parameters = tunnelrates_RTS(
                data, samplerate=samplerate, fig=fig, verbose=verbose)

            self.assertTrue(parameters['up_segments']['mean'] > 0)
            self.assertTrue(parameters['down_segments']['mean'] > 0)

        samplerate = 1e6
        rate_up = 200e3
        rate_down = 20e3
        data = generate_RTS_signal(100000,
                                   std_gaussian_noise=0.01,
                                   rate_up=rate_up,
                                   rate_down=rate_down,
                                   samplerate=samplerate)

        tunnelrate_dn, tunnelrate_up, _ = tunnelrates_RTS(
            data,
            samplerate=samplerate,
            min_sep=1.0,
            max_sep=2222,
            min_duration=1,
            num_bins=40,
            fig=fig,
            verbose=verbose)

        self.assertTrue(np.abs(tunnelrate_dn - rate_up * 1e-3) < 100)
        self.assertTrue(np.abs(tunnelrate_up - rate_down * 1e-3) < 10)
        plt.close('all')
예제 #3
0
 def test_RTS_fractions(self, fig=None, verbose=0):
     data = np.sin(np.arange(0, 1000, .1)) > .6
     data = data + (np.random.rand(data.size) - .5) / 10
     tunnelrate_dn, tunnelrate_up, rts_results = tunnelrates_RTS(data, samplerate=1e6, min_duration=1, max_sep=40,
                                                                 fig=None, verbose=0)
     self.assertAlmostEqual(tunnelrate_dn, 1000, -2)
     self.assertAlmostEqual(tunnelrate_up, 1000, -2)
     self.assertAlmostEqual(rts_results['fraction_down'], 0.7047, 1)
     self.assertEqual(rts_results['fraction_down'], 1 - rts_results['fraction_up'])