Source code for tftb.generators.tests.test_misc

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright © 2015 jaidev <jaidev@newton>
#
# Distributed under terms of the MIT license.

"""Tests for the generators.misc module."""

import unittest
from tftb.tests.test_base import TestBase
from tftb.generators import misc
from tftb.processing.utils import derive_window
import numpy as np
from scipy.signal import argrelmax, argrelmin, hanning


[docs]class TestMisc(TestBase):
[docs] def test_window_derivative(self): """Test if the derivative of a window function is calculated properly.""" window = hanning(210) derivative = derive_window(window) ix_win_maxima = np.argmax(window) self.assertAlmostEqual(derivative[ix_win_maxima], 0.0, places=3)
[docs] def test_altes(self): """Test the altes signal generation.""" ideal = np.array([0.00200822, -0.21928398, 0.66719239, 0.66719239, -0.17666382, -0.17009953, -0.038399, -0.00083597]) actual = misc.altes(8, 0.1, 0.5) np.testing.assert_allclose(ideal, actual, atol=1e-8, rtol=1e-8)
[docs] def test_doppler(self): """Test the doppler signal generation.""" fm, am, iflaw = misc.doppler(512, 200.0, 65, 10, 50) self.assert_is_monotonic_decreasing(iflaw)
[docs] def test_klauder(self): """Test the klauder wavelet generation.""" ideal = np.array([0.14899879, -0.16633309, -0.42806931, 0.16605633, 0.70769336, 0.16605633, -0.42806931, -0.16633309]) actual = misc.klauder(8) np.testing.assert_allclose(ideal, actual, atol=1e-8, rtol=1e-8)
[docs] def test_mexhat(self): """Test the mexhat wavelet generation.""" ideal = np.array([-4.36444274e-09, -4.29488427e-04, -1.47862882e-01, 4.43113463e-01, -1.47862882e-01, -4.29488427e-04, -4.36444274e-09]) actual = misc.mexhat(0.5) np.testing.assert_allclose(ideal, actual, atol=1e-9, rtol=1e-9) maxima = argrelmax(actual) self.assertEqual(maxima[0].shape[0], 1) self.assertEqual(maxima[0][0], 3) minima = argrelmin(actual) self.assertCountEqual(minima[0], (2, 4))
[docs] def test_gdpower(self): """Test the gdpower generation.""" ideal_sig = np.array([0.08540661 + 0.05077147j, 0.16735776 + 0.11542816j, -0.08825763 + 0.17010894j, 0.04412953 - 0.01981114j, -0.04981628 + 0.34985966j, -0.56798889 - 0.07983783j, 0.05266730 - 0.57074006j, 0.35650159 - 0.01577918j]) ideal_f = np.array([0.125, 0.25, 0.375, 0.5]) ideal_gpd = np.array([8.8, 6.45685425, 5.41880215, 4.8]) ideals = (ideal_sig, ideal_gpd, ideal_f) actuals = misc.gdpower(len(ideal_sig), 0.5) for i, ideal in enumerate(ideals): actual = actuals[i] np.testing.assert_allclose(ideal, actual, atol=1e-7, rtol=1e-7)
if __name__ == '__main__': unittest.main()