From 9bc753a846269770415068aeec51fd88b1b24e1c Mon Sep 17 00:00:00 2001 From: "gregory.ashton" <gregory.ashton@ligo.org> Date: Wed, 7 Jun 2017 12:48:06 +0200 Subject: [PATCH] Initial implemenation of DMoff veto --- pyfstat/__init__.py | 2 +- pyfstat/grid_based_searches.py | 86 +++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/pyfstat/__init__.py b/pyfstat/__init__.py index 06b11f7..fe04199 100644 --- a/pyfstat/__init__.py +++ b/pyfstat/__init__.py @@ -2,4 +2,4 @@ from __future__ import division as _division from .core import BaseSearchClass, ComputeFstat, Writer, SemiCoherentSearch, SemiCoherentGlitchSearch from .mcmc_based_searches import MCMCSearch, MCMCGlitchSearch, MCMCSemiCoherentSearch, MCMCFollowUpSearch, MCMCTransientSearch -from .grid_based_searches import GridSearch, GridUniformPriorSearch, GridGlitchSearch, FrequencySlidingWindow +from .grid_based_searches import GridSearch, GridUniformPriorSearch, GridGlitchSearch, FrequencySlidingWindow, DMoff_NO_SPIN diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py index 62267a7..d4164ca 100644 --- a/pyfstat/grid_based_searches.py +++ b/pyfstat/grid_based_searches.py @@ -11,7 +11,7 @@ import matplotlib.pyplot as plt import helper_functions from core import BaseSearchClass, ComputeFstat, SemiCoherentGlitchSearch, SemiCoherentSearch -from core import tqdm, args, earth_ephem, sun_ephem +from core import tqdm, args, earth_ephem, sun_ephem, read_par class GridSearch(BaseSearchClass): @@ -449,3 +449,87 @@ class FrequencySlidingWindow(GridSearch): '{}/{}_sliding_window.png'.format(self.outdir, self.label)) else: return ax + + +class DMoff_NO_SPIN(GridSearch): + """ DMoff test using SSBPREC_NO_SPIN """ + @helper_functions.initializer + def __init__(self, par_file, label, outdir, sftfilepath, minStartTime=None, + maxStartTime=None, minCoverFreq=None, maxCoverFreq=None, + earth_ephem=None, sun_ephem=None, detectors=None, + injectSources=None, assumeSqrtSX=None): + """ + Parameters + ---------- + par_file: str + Path to a .par file to read in the F0, F1 etc + label, outdir: str + A label and directory to read/write data from/to + sftfilepath: str + File patern to match SFTs + minStartTime, maxStartTime: int + GPS seconds of the start time and end time + + For all other parameters, see `pyfstat.ComputeFStat` for details + """ + + if earth_ephem is None: + self.earth_ephem = self.earth_ephem_default + if sun_ephem is None: + self.sun_ephem = self.sun_ephem_default + + if os.path.isdir(outdir) is False: + os.mkdir(outdir) + + if os.path.isfile(par_file): + self.par = read_par(filename=par_file) + else: + raise ValueError('The .par file does not exist') + + self.nsegs = 1 + self.BSGL = False + + self.tref = self.par['tref'] + self.F1s = [self.par.get('F1', 0)] + self.F2s = [self.par.get('F2', 0)] + self.Alphas = [self.par['Alpha']] + self.Deltas = [self.par['Delta']] + self.Re = 6.371e6 + self.c = 2.998e8 + self.SIDEREAL_DAY = 23*60*60 + 56*60 + 4.0916 + self.TERRESTRIAL_DAY = 86400. + a0 = self.Re/self.c*np.cos(self.par['Delta']) + self.m0 = np.max([4, int(np.ceil(2*np.pi*self.par['F0']*a0))]) + logging.info('m0 = {}'.format(self.m0)) + + def get_results(self): + """ Compute the three summed detection statistics + + Returns + ------- + m0, twoF_SUM, twoFstar_SUM_SIDEREAL, twoFstar_SUM_TERRESTRIAL + + """ + self.SSBprec = 2 + self.out_file = '{}/{}_gridFS_SSBPREC2.txt'.format( + self.outdir, self.label) + self.F0s = [self.par['F0']+j/self.SIDEREAL_DAY for j in range(-4, 5)] + self.run() + twoF_SUM = np.sum(self.data[:, -1]) + + self.SSBprec = 4 + self.out_file = '{}/{}_gridFS_SSBPREC4_SIDEREAL.txt'.format( + self.outdir, self.label) + self.F0s = [self.par['F0']+j/self.SIDEREAL_DAY + for j in range(-self.m0, self.m0+1)] + self.run() + twoFstar_SUM = np.sum(self.data[:, -1]) + + self.out_file = '{}/{}_gridFS_SSBPREC4_TERRESTIAL.txt'.format( + self.outdir, self.label) + self.F0s = [self.par['F0']+j/self.TERRESTRIAL_DAY + for j in range(-self.m0, self.m0+1)] + self.run() + twoFstar_SUM_terrestrial = np.sum(self.data[:, -1]) + + return self.m0, twoF_SUM, twoFstar_SUM, twoFstar_SUM_terrestrial -- GitLab