Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
other_tests.py 2.47 KiB
from __future__ import absolute_import

import os
import unittest

import numpy as np
from past.builtins import execfile

import tupak


class Test(unittest.TestCase):
    outdir = './outdir'
    dir_path = os.path.dirname(os.path.realpath(__file__))
    dir_path = os.path.abspath(os.path.join(dir_path, os.path.pardir))

    # Run a script to produce standard data
    msd = {}  # A dictionary of variables saved in make_standard_data.py
    execfile(dir_path + '/test/make_standard_data.py', msd)
    '''
    @classmethod
    def setUpClass(self):
        if os.path.isdir(self.outdir):
            try:
                shutil.rmtree(self.outdir)
            except OSError:
                logging.warning(
                    "{} not removed prior to tests".format(self.outdir))

    @classmethod
    def tearDownClass(self):
        if os.path.isdir(self.outdir):
            try:
                shutil.rmtree(self.outdir)
            except OSError:
                logging.warning(
                    "{} not removed prior to tests".format(self.outdir))
    '''
    def test_make_standard_data(self):
        " Load in the saved standard data and compare with new data "

        # Load in the saved standard data
        frequencies_saved, hf_real_saved, hf_imag_saved = np.loadtxt(
            self.dir_path + '/test/standard_data.txt').T
        hf_signal_and_noise_saved = hf_real_saved + 1j * hf_imag_saved

        self.assertTrue(np.array_equal(
            self.msd['frequencies'], frequencies_saved))
        self.assertAlmostEqual(all(
            self.msd['hf_signal_and_noise'] - hf_signal_and_noise_saved),
            0.00000000, 5)

    def test_recover_luminosity_distance(self):
        likelihood = tupak.gw.likelihood.GravitationalWaveTransient(
            [self.msd['IFO']], self.msd['waveform_generator'])

        priors = {}
        for key in self.msd['simulation_parameters']:
            priors[key] = self.msd['simulation_parameters'][key]

        dL = self.msd['simulation_parameters']['luminosity_distance']
        priors['luminosity_distance'] = tupak.core.prior.Uniform(
            name='luminosity_distance', minimum=dL - 10, maximum=dL + 10)

        result = tupak.core.sampler.run_sampler(
            likelihood, priors, sampler='dynesty', verbose=False, npoints=100)
        self.assertAlmostEqual(
            np.mean(result.posterior.luminosity_distance), dL,
            delta=3*np.std(result.posterior.luminosity_distance))


if __name__ == '__main__':
    unittest.main()