예제 #1
0
    def test_ipdft(self):
        """correctly compute integer discrete fourier transform"""
        s = [0, 1, 0, -1, 0, 1, 0, -1]
        X, periods = ipdft(s, llim=1, ulim=len(s))
        exp_X = abs(
            array(
                [
                    0,
                    0,
                    -1.5 + 0.866j,
                    -4j,
                    2.927 - 0.951j,
                    1.5 + 0.866j,
                    0.302 + 0.627j,
                    0,
                ]
            )
        )
        X = abs(X)
        self.assertFloatEqual(X, exp_X, eps=1e-3)

        ipdft_x, ipdft_periods = ipdft(self.sig, llim=2, ulim=50)
        ipdft_x = abs(ipdft_x)
        max_idx = list(ipdft_x).index(max(ipdft_x))
        ipdft_p = ipdft_periods[max_idx]
        self.assertEqual(ipdft_p, self.p)
예제 #2
0
    def test_hybrid_returns_all(self):
        """correctly returns hybrid, ipdft and autocorr statistics"""
        ipdft_pwr, ipdft_prd = ipdft(self.sig, llim=2, ulim=50)
        auto_x, auto_periods = auto_corr(self.sig, llim=2, ulim=50)
        hybrid_x, hybrid_periods = hybrid(self.sig, llim=None, ulim=50)
        hybrid_ipdft_autocorr_stats, hybrid_periods = hybrid(
            self.sig, llim=None, ulim=50, return_all=True
        )
        self.assertEqual(hybrid_ipdft_autocorr_stats[0], hybrid_x)
        self.assertEqual(hybrid_ipdft_autocorr_stats[1], ipdft_pwr)
        self.assertEqual(hybrid_ipdft_autocorr_stats[2], auto_x)

        ipdft_pwr, ipdft_prd = ipdft(self.sig, llim=10, ulim=10)
        auto_x, auto_periods = auto_corr(self.sig, llim=10, ulim=10)
        hybrid_x, hybrid_periods = hybrid(self.sig, llim=10, ulim=10)
        hybrid_ipdft_autocorr_stats, hybrid_periods = hybrid(
            self.sig, llim=10, ulim=10, return_all=True
        )
        self.assertEqual(hybrid_ipdft_autocorr_stats[0], hybrid_x)
        self.assertEqual(hybrid_ipdft_autocorr_stats[1], ipdft_pwr)
        self.assertEqual(hybrid_ipdft_autocorr_stats[2], auto_x)
예제 #3
0
파일: test_period.py 프로젝트: mr-c/cogent3
 def test_g_statitic(self):
     """calc g-stat correctly"""
     X, periods = ipdft(self.sig, llim=2, ulim=39)
     g_obs, p_val = g_statistic(X)
     assert_allclose(p_val, 0.9997, rtol=1e-3)
     assert_allclose(g_obs, 0.0577, rtol=1e-3)
예제 #4
0
 def test_goertzel(self):
     """goertzel and ipdft should be the same"""
     ipdft_pwr, ipdft_prd = ipdft(self.sig, llim=10, ulim=10)
     self.assertFloatEqual(goertzel(self.sig, 10), ipdft_pwr)
예제 #5
0
 def test_g_statitic(self):
     """calc g-stat correctly"""
     X, periods = ipdft(self.sig, llim=2, ulim=39)
     g_obs, p_val = g_statistic(X)
     self.assertFloatEqual(p_val, 0.9997, eps=1e-3)
     self.assertFloatEqual(g_obs, 0.0577, eps=1e-3)
예제 #6
0
 def test_goertzel(self):
     """goertzel and ipdft should be the same"""
     ipdft_pwr, ipdft_prd = ipdft(self.sig, llim=10, ulim=10)
     assert_allclose(goertzel(self.sig, 10), ipdft_pwr)