Skip to content
Snippets Groups Projects
Commit dbdd76b0 authored by Gregory Ashton's avatar Gregory Ashton
Browse files

Various improvements to the test coverage

parent cb7b5658
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ import numpy as np ...@@ -3,6 +3,7 @@ import numpy as np
import os import os
import shutil import shutil
import pyfstat import pyfstat
import lalpulsar
class Test(unittest.TestCase): class Test(unittest.TestCase):
...@@ -25,14 +26,16 @@ class TestWriter(Test): ...@@ -25,14 +26,16 @@ class TestWriter(Test):
def test_make_cff(self): def test_make_cff(self):
Writer = pyfstat.Writer(self.label, outdir=self.outdir) Writer = pyfstat.Writer(self.label, outdir=self.outdir)
Writer.make_cff() Writer.make_cff()
self.assertTrue(os.path.isfile('./TestData/{}.cff'.format(self.label))) self.assertTrue(os.path.isfile(
'./{}/{}.cff'.format(self.outdir, self.label)))
def test_run_makefakedata(self): def test_run_makefakedata(self):
Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400) Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400)
Writer.make_cff() Writer.make_cff()
Writer.run_makefakedata() Writer.run_makefakedata()
self.assertTrue(os.path.isfile( self.assertTrue(os.path.isfile(
'./TestData/H-48_H1_1800SFT_TestWriter-700000000-86400.sft')) './{}/H-48_H1_1800SFT_TestWriter-700000000-86400.sft'
.format(self.outdir)))
def test_makefakedata_usecached(self): def test_makefakedata_usecached(self):
Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400) Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400)
...@@ -56,7 +59,7 @@ class TestBunch(Test): ...@@ -56,7 +59,7 @@ class TestBunch(Test):
self.assertTrue(b.x == 10) self.assertTrue(b.x == 10)
class TestPar(Test): class Test_par(Test):
label = 'TestPar' label = 'TestPar'
def test(self): def test(self):
...@@ -73,7 +76,7 @@ class TestPar(Test): ...@@ -73,7 +76,7 @@ class TestPar(Test):
return_type='dict') return_type='dict')
self.assertTrue(par['x'] == 100) self.assertTrue(par['x'] == 100)
self.assertTrue(par['y'] == 10) self.assertTrue(par['y'] == 10)
os.system('rm -r TestData') os.system('rm -r {}'.format(self.outdir))
class TestBaseSearchClass(Test): class TestBaseSearchClass(Test):
...@@ -120,17 +123,25 @@ class TestComputeFstat(Test): ...@@ -120,17 +123,25 @@ class TestComputeFstat(Test):
def test_run_computefstatistic_single_point(self): def test_run_computefstatistic_single_point(self):
Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400, Writer = pyfstat.Writer(self.label, outdir=self.outdir, duration=86400,
h0=1, sqrtSX=1) h0=1, sqrtSX=1, detectors='H1,L1')
Writer.make_data() Writer.make_data()
predicted_FS = Writer.predict_fstat() predicted_FS = Writer.predict_fstat()
search = pyfstat.ComputeFstat( search_H1 = pyfstat.ComputeFstat(
tref=Writer.tref, tref=Writer.tref, detectors='H1',
sftfilepattern='{}/*{}*sft'.format(Writer.outdir, Writer.label),
SSBprec=lalpulsar.SSBPREC_RELATIVISTIC)
FS = search_H1.get_fullycoherent_twoF(
Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2,
Writer.Alpha, Writer.Delta)
self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2)
search_H1L1 = pyfstat.ComputeFstat(
tref=Writer.tref, detectors='H1,L1',
sftfilepattern='{}/*{}*sft'.format(Writer.outdir, Writer.label)) sftfilepattern='{}/*{}*sft'.format(Writer.outdir, Writer.label))
FS = search.get_fullycoherent_twoF( FS = search_H1L1.get_fullycoherent_twoF(
Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2, Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2,
Writer.Alpha, Writer.Delta) Writer.Alpha, Writer.Delta)
print predicted_FS, FS
self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2) self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2)
def run_computefstatistic_single_point_no_noise(self): def run_computefstatistic_single_point_no_noise(self):
...@@ -148,7 +159,7 @@ class TestComputeFstat(Test): ...@@ -148,7 +159,7 @@ class TestComputeFstat(Test):
print predicted_FS, FS print predicted_FS, FS
self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2) self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2)
def test_injectSources_from_file(self): def test_injectSources(self):
Writer = pyfstat.Writer(self.label, outdir=self.outdir, add_noise=False, Writer = pyfstat.Writer(self.label, outdir=self.outdir, add_noise=False,
duration=86400, h0=1, sqrtSX=1) duration=86400, h0=1, sqrtSX=1)
Writer.make_cff() Writer.make_cff()
...@@ -159,13 +170,79 @@ class TestComputeFstat(Test): ...@@ -159,13 +170,79 @@ class TestComputeFstat(Test):
minCoverFreq=28, maxCoverFreq=32, minStartTime=Writer.tstart, minCoverFreq=28, maxCoverFreq=32, minStartTime=Writer.tstart,
maxStartTime=Writer.tstart+Writer.duration, maxStartTime=Writer.tstart+Writer.duration,
detectors=Writer.detectors) detectors=Writer.detectors)
FS = search.get_fullycoherent_twoF( FS_from_file = search.get_fullycoherent_twoF(
Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2, Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2,
Writer.Alpha, Writer.Delta) Writer.Alpha, Writer.Delta)
Writer.make_data() Writer.make_data()
predicted_FS = Writer.predict_fstat() predicted_FS = Writer.predict_fstat()
print predicted_FS, FS self.assertTrue(np.abs(predicted_FS-FS_from_file)/FS_from_file < 0.2)
self.assertTrue(np.abs(predicted_FS-FS)/FS < 0.2)
injectSourcesdict = pyfstat.core.read_par(Writer.config_file_name)
injectSourcesdict['F0'] = injectSourcesdict['Freq']
injectSourcesdict['F1'] = injectSourcesdict['f1dot']
injectSourcesdict['F2'] = injectSourcesdict['f2dot']
search = pyfstat.ComputeFstat(
tref=Writer.tref, assumeSqrtSX=1, injectSources=injectSourcesdict,
minCoverFreq=28, maxCoverFreq=32, minStartTime=Writer.tstart,
maxStartTime=Writer.tstart+Writer.duration,
detectors=Writer.detectors)
FS_from_dict = search.get_fullycoherent_twoF(
Writer.tstart, Writer.tend, Writer.F0, Writer.F1, Writer.F2,
Writer.Alpha, Writer.Delta)
self.assertTrue(FS_from_dict == FS_from_file)
class TestSemiCoherentSearch(Test):
label = "TestSemiCoherentSearch"
def test_get_semicoherent_twoF(self):
duration = 10*86400
Writer = pyfstat.Writer(
self.label, outdir=self.outdir, duration=duration, h0=1, sqrtSX=1)
Writer.make_data()
search = pyfstat.SemiCoherentSearch(
label=self.label, outdir=self.outdir, nsegs=2,
sftfilepattern='{}/*{}*sft'.format(Writer.outdir, Writer.label),
tref=Writer.tref, minStartTime=Writer.tstart,
maxStartTime=Writer.tend)
search.get_semicoherent_twoF(
Writer.F0, Writer.F1, Writer.F2, Writer.Alpha, Writer.Delta,
record_segments=True)
# Compute the predicted semi-coherent Fstat
minStartTime = Writer.tstart
maxStartTime = Writer.tend
Writer.maxStartTime = minStartTime + duration / 2.0
FSA = Writer.predict_fstat()
Writer.tstart = minStartTime + duration / 2.0
Writer.tend = maxStartTime
FSB = Writer.predict_fstat()
FSs = np.array([FSA, FSB])
diffs = (np.array(search.detStat_per_segment) - FSs) / FSs
self.assertTrue(np.all(diffs < 0.3))
def test_get_semicoherent_BSGL(self):
duration = 10*86400
Writer = pyfstat.Writer(
self.label, outdir=self.outdir, duration=duration,
detectors='H1,L1')
Writer.make_data()
search = pyfstat.SemiCoherentSearch(
label=self.label, outdir=self.outdir, nsegs=2,
sftfilepattern='{}/*{}*sft'.format(Writer.outdir, Writer.label),
tref=Writer.tref, minStartTime=Writer.tstart,
maxStartTime=Writer.tend, BSGL=True)
BSGL = search.get_semicoherent_twoF(
Writer.F0, Writer.F1, Writer.F2, Writer.Alpha, Writer.Delta,
record_segments=True)
self.assertTrue(BSGL > 0)
class TestSemiCoherentGlitchSearch(Test): class TestSemiCoherentGlitchSearch(Test):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment