Skip to content
Snippets Groups Projects
Commit 6e2006c9 authored by MoritzThomasHuebner's avatar MoritzThomasHuebner
Browse files

Created tests for the PSD

parent 226dd945
No related branches found
No related tags found
1 merge request!173Resolve "Improve PowerSpectralDensity structure"
Pipeline #29845 failed
......@@ -8,6 +8,8 @@ from mock import patch
import numpy as np
import scipy.signal.windows
import gwpy
import os
import logging
class TestDetector(unittest.TestCase):
......@@ -782,5 +784,176 @@ class TestInterferometerList(unittest.TestCase):
self.assertListEqual([self.ifo1.name, new_ifo.name, self.ifo2.name], names)
class TestPowerSpectralDensityWithoutFiles(unittest.TestCase):
def setUp(self):
self.frequency_array = np.array([1., 2., 3.])
self.psd_array = np.array([16., 25., 36.])
self.asd_array = np.array([4., 5., 6.])
def tearDown(self):
del self.frequency_array
del self.psd_array
del self.asd_array
def test_init_with_asd_array(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_array=self.asd_array)
self.assertTrue(np.array_equal(self.frequency_array, psd.frequency_array))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
def test_init_with_psd_array(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_array=self.psd_array)
self.assertTrue(np.array_equal(self.frequency_array, psd.frequency_array))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
def test_setting_asd_array_after_init(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array)
psd.asd_array = self.asd_array
self.assertTrue(np.array_equal(self.frequency_array, psd.frequency_array))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
def test_setting_psd_array_after_init(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array)
psd.psd_array = self.psd_array
self.assertTrue(np.array_equal(self.frequency_array, psd.frequency_array))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
def test_power_spectral_density_interpolated_from_asd_array(self):
expected = np.array([25.])
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_array = self.asd_array)
self.assertEqual(expected, psd.power_spectral_density_interpolated(2))
def test_power_spectral_density_interpolated_from_psd_array(self):
expected = np.array([25.])
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_array = self.psd_array)
self.assertEqual(expected, psd.power_spectral_density_interpolated(2))
def test_from_amplitude_spectral_density_array(self):
actual = tupak.gw.detector.PowerSpectralDensity.from_amplitude_spectral_density_array(
frequency_array=self.frequency_array, asd_array=self.asd_array)
self.assertTrue(np.array_equal(self.psd_array, actual.psd_array))
self.assertTrue(np.array_equal(self.asd_array, actual.asd_array))
def test_from_power_spectral_density_array(self):
actual = tupak.gw.detector.PowerSpectralDensity.from_power_spectral_density_array(
frequency_array=self.frequency_array, psd_array=self.psd_array)
self.assertTrue(np.array_equal(self.psd_array, actual.psd_array))
self.assertTrue(np.array_equal(self.asd_array, actual.asd_array))
class TestPowerSpectralDensityWithFiles(unittest.TestCase):
def setUp(self):
self.dir = os.path.join(os.path.dirname(__file__), 'noise_curves')
os.mkdir(self.dir)
self.asd_file = os.path.join(os.path.dirname(__file__), 'noise_curves', 'asd_test_file.txt')
self.psd_file = os.path.join(os.path.dirname(__file__), 'noise_curves', 'psd_test_file.txt')
with open(self.asd_file, "x") as f:
f.write('1.\t1.0e-21\n2.\t2.0e-21\n3.\t3.0e-21')
with open(self.psd_file, "x") as f:
f.write('1.\t1.0e-42\n2.\t4.0e-42\n3.\t9.0e-42')
self.frequency_array = np.array([1.0, 2.0, 3.0])
self.asd_array = np.array([1.0e-21, 2.0e-21, 3.0e-21])
self.psd_array = np.array([1.0e-42, 4.0e-42, 9.0e-42])
def tearDown(self):
os.remove(self.asd_file)
os.remove(self.psd_file)
os.rmdir(self.dir)
del self.dir
del self.asd_array
del self.psd_array
del self.asd_file
del self.psd_file
def test_init_with_psd_file(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_file=self.psd_file)
self.assertEqual(self.psd_file, psd.psd_file)
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
self.assertTrue(np.allclose(self.asd_array, psd.asd_array, atol=1e-30))
def test_init_with_asd_file(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_file=self.asd_file)
self.assertEqual(self.asd_file, psd.asd_file)
self.assertTrue(np.allclose(self.psd_array, psd.psd_array, atol=1e-60))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
def test_setting_psd_array_after_init(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array)
psd.psd_file = self.psd_file
self.assertEqual(self.psd_file, psd.psd_file)
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
self.assertTrue(np.allclose(self.asd_array, psd.asd_array, atol=1e-30))
def test_init_with_asd_array_after_init(self):
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array)
psd.asd_file = self.asd_file
self.assertEqual(self.asd_file, psd.asd_file)
self.assertTrue(np.allclose(self.psd_array, psd.psd_array, atol=1e-60))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
def test_power_spectral_density_interpolated_from_asd_file(self):
expected = np.array([4.0e-42])
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_file=self.asd_file)
self.assertTrue(np.allclose(expected, psd.power_spectral_density_interpolated(2), atol=1e-60))
def test_power_spectral_density_interpolated_from_psd_file(self):
expected = np.array([4.0e-42])
psd = tupak.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_file=self.psd_file)
self.assertAlmostEqual(expected, psd.power_spectral_density_interpolated(2))
def test_from_amplitude_spectral_density_file(self):
psd = tupak.gw.detector.PowerSpectralDensity.from_amplitude_spectral_density_file(asd_file=self.asd_file)
self.assertEqual(self.asd_file, psd.asd_file)
self.assertTrue(np.allclose(self.psd_array, psd.psd_array, atol=1e-60))
self.assertTrue(np.array_equal(self.asd_array, psd.asd_array))
def test_from_power_spectral_density_file(self):
psd = tupak.gw.detector.PowerSpectralDensity.from_power_spectral_density_file(psd_file=self.psd_file)
self.assertEqual(self.psd_file, psd.psd_file)
self.assertTrue(np.array_equal(self.psd_array, psd.psd_array))
self.assertTrue(np.allclose(self.asd_array, psd.asd_array, atol=1e-30))
def test_from_aligo(self):
psd = tupak.gw.detector.PowerSpectralDensity.from_aligo()
expected_file = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'tupak/gw/noise_curves', 'aLIGO_ZERO_DET_high_P_psd.txt')
expected = tupak.gw.detector.PowerSpectralDensity(psd_file=expected_file)
self.assertEqual(expected_file, psd.psd_file)
self.assertTrue(np.allclose(expected.psd_array, psd.psd_array, atol=1e-60))
self.assertTrue(np.array_equal(expected.asd_array, psd.asd_array))
def test_check_file_psd_file_set_to_asd_file(self):
logger = logging.getLogger('tupak')
m = MagicMock()
logger.warning = m
psd = tupak.gw.detector.PowerSpectralDensity(psd_file=self.asd_file)
self.assertEqual(4, m.call_count)
def test_check_file_not_called_psd_file_set_to_psd_file(self):
logger = logging.getLogger('tupak')
m = MagicMock()
logger.warning = m
psd = tupak.gw.detector.PowerSpectralDensity(psd_file=self.psd_file)
self.assertEqual(0, m.call_count)
def test_check_file_asd_file_set_to_psd_file(self):
logger = logging.getLogger('tupak')
m = MagicMock()
logger.warning = m
psd = tupak.gw.detector.PowerSpectralDensity(asd_file=self.psd_file)
self.assertEqual(4, m.call_count)
def test_check_file_not_called_asd_file_set_to_asd_file(self):
logger = logging.getLogger('tupak')
m = MagicMock()
logger.warning = m
psd = tupak.gw.detector.PowerSpectralDensity(asd_file=self.asd_file)
self.assertEqual(0, m.call_count)
if __name__ == '__main__':
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment