示例#1
0
 def test_smoothingMatrix(self):
     """
     Tests some aspects of the matrix.
     """
     # Disable div by zero errors.
     temp = np.geterr()
     np.seterr(all="ignore")
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0], dtype=np.float32)
     matrix = calculateSmoothingMatrix(frequencies, 20.0)
     self.assertEqual(matrix.dtype, np.float32)
     for _i, freq in enumerate(frequencies):
         np.testing.assert_array_equal(matrix[_i], konnoOhmachiSmoothingWindow(frequencies, freq, 20.0))
         # Should not be normalized. Test only for larger frequencies
         # because smaller ones have a smaller window.
         if freq >= 10.0:
             self.assertTrue(matrix[_i].sum() > 1.0)
     # Input should be output dtype.
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0], dtype=np.float64)
     matrix = calculateSmoothingMatrix(frequencies, 20.0)
     self.assertEqual(matrix.dtype, np.float64)
     # Check normalization.
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0], dtype=np.float32)
     matrix = calculateSmoothingMatrix(frequencies, 20.0, normalize=True)
     self.assertEqual(matrix.dtype, np.float32)
     for _i, freq in enumerate(frequencies):
         np.testing.assert_array_equal(
             matrix[_i], konnoOhmachiSmoothingWindow(frequencies, freq, 20.0, normalize=True)
         )
         # Should not be normalized. Test only for larger frequencies
         # because smaller ones have a smaller window.
         self.assertAlmostEqual(matrix[_i].sum(), 1.0, 5)
     np.seterr(**temp)
示例#2
0
 def test_smoothingWindow(self):
     """
     Tests the creation of the smoothing window.
     """
     # Disable div by zero errors.
     temp = np.geterr()
     np.seterr(all="ignore")
     # Frequency of zero results in a delta peak at zero (there usually
     # should be just one zero in the frequency array.
     window = konnoOhmachiSmoothingWindow(np.array([0, 1, 0, 3], dtype=np.float32), 0)
     np.testing.assert_array_equal(window, np.array([1, 0, 1, 0], dtype=np.float32))
     # Wrong dtypes raises.
     self.assertRaises(ValueError, konnoOhmachiSmoothingWindow, np.arange(10, dtype=np.int32), 10)
     # If frequency=center frequency, log results in infinity. Limit of
     # whole formulae is 1.
     window = konnoOhmachiSmoothingWindow(np.array([5.0, 1.0, 5.0, 2.0], dtype=np.float32), 5)
     np.testing.assert_array_equal(window[[0, 2]], np.array([1.0, 1.0], dtype=np.float32))
     # Output dtype should be the dtype of frequencies.
     self.assertEqual(konnoOhmachiSmoothingWindow(np.array([1, 6, 12], dtype=np.float32), 5).dtype, np.float32)
     self.assertEqual(konnoOhmachiSmoothingWindow(np.array([1, 6, 12], dtype=np.float64), 5).dtype, np.float64)
     # Check if normalizing works.
     window = konnoOhmachiSmoothingWindow(self.frequencies, 20)
     self.assertTrue(window.sum() > 1.0)
     window = konnoOhmachiSmoothingWindow(self.frequencies, 20, normalize=True)
     self.assertAlmostEqual(window.sum(), 1.0, 5)
     # Just one more to test if there are no invalid values and the range if
     # ok.
     window = konnoOhmachiSmoothingWindow(self.frequencies, 20)
     self.assertEqual(np.any(np.isnan(window)), False)
     self.assertEqual(np.any(np.isinf(window)), False)
     self.assertTrue(np.all(window <= 1.0))
     self.assertTrue(np.all(window >= 0.0))
     np.seterr(**temp)
示例#3
0
 def test_smoothingMatrix(self):
     """
     Tests some aspects of the matrix.
     """
     # Disable div by zero erros.
     temp = np.geterr()
     np.seterr(all='ignore')
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0],
                            dtype='float32')
     matrix = calculateSmoothingMatrix(frequencies, 20.0)
     self.assertEqual(matrix.dtype, np.float32)
     for _i, freq in enumerate(frequencies):
         np.testing.assert_array_equal(
             matrix[_i],
             konnoOhmachiSmoothingWindow(frequencies, freq, 20.0))
         # Should not be normalized. Test only for larger frequencies
         # because smaller ones have a smaller window.
         if freq >= 10.0:
             self.assertTrue(matrix[_i].sum() > 1.0)
     # Input should be output dtype.
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0],
                            dtype='float64')
     matrix = calculateSmoothingMatrix(frequencies, 20.0)
     self.assertEqual(matrix.dtype, np.float64)
     # Check normalization.
     frequencies = np.array([0.0, 1.0, 2.0, 10.0, 25.0, 50.0, 100.0],
                            dtype='float32')
     matrix = calculateSmoothingMatrix(frequencies, 20.0, normalize=True)
     self.assertEqual(matrix.dtype, np.float32)
     for _i, freq in enumerate(frequencies):
         np.testing.assert_array_equal(
             matrix[_i],
             konnoOhmachiSmoothingWindow(frequencies,
                                         freq,
                                         20.0,
                                         normalize=True))
         # Should not be normalized. Test only for larger frequencies
         # because smaller ones have a smaller window.
         self.assertAlmostEqual(matrix[_i].sum(), 1.0, 5)
     np.seterr(**temp)
示例#4
0
 def test_smoothingWindow(self):
     """
     Tests the creation of the smoothing window.
     """
     # Disable div by zero erros.
     temp = np.geterr()
     np.seterr(all='ignore')
     # Frequency of zero results in a delta peak at zero (there usually
     # should be just one zero in the frequency array.
     window = konnoOhmachiSmoothingWindow(
         np.array([0, 1, 0, 3], dtype='float32'), 0)
     np.testing.assert_array_equal(window,
                                   np.array([1, 0, 1, 0], dtype='float32'))
     # Wrong dtypes raises.
     self.assertRaises(ValueError, konnoOhmachiSmoothingWindow,
                       np.arange(10, dtype='int32'), 10)
     # If frequency=center frequency, log results in infinity. Limit of
     # whole formulae is 1.
     window = konnoOhmachiSmoothingWindow(
         np.array([5.0, 1.0, 5.0, 2.0], dtype='float32'), 5)
     np.testing.assert_array_equal(window[[0, 2]],
                                   np.array([1.0, 1.0], dtype='float32'))
     # Output dtype should be the dtype of frequencies.
     self.assertEqual(
         konnoOhmachiSmoothingWindow(np.array([1, 6, 12], dtype='float32'),
                                     5).dtype, np.float32)
     self.assertEqual(
         konnoOhmachiSmoothingWindow(np.array([1, 6, 12], dtype='float64'),
                                     5).dtype, np.float64)
     # Check if normalizing works.
     window = konnoOhmachiSmoothingWindow(self.frequencies, 20)
     self.assertTrue(window.sum() > 1.0)
     window = konnoOhmachiSmoothingWindow(self.frequencies,
                                          20,
                                          normalize=True)
     self.assertAlmostEqual(window.sum(), 1.0, 5)
     # Just one more to test if there are no invalid values and the range if
     # ok.
     window = konnoOhmachiSmoothingWindow(self.frequencies, 20)
     self.assertEqual(np.any(np.isnan(window)), False)
     self.assertEqual(np.any(np.isinf(window)), False)
     self.assertTrue(np.all(window <= 1.0))
     self.assertTrue(np.all(window >= 0.0))
     np.seterr(**temp)