diff --git a/pyfstat.py b/pyfstat.py index 21ce44556f15f5d34d05bd35e360563502557d53..f7ffde4d990d110e5ec4d47326bf0043028b58b7 100755 --- a/pyfstat.py +++ b/pyfstat.py @@ -163,7 +163,7 @@ class ComputeFstat(object): sun_ephem_default = sun_ephem @initializer - def __init__(self, tref, sftlabel=None, sftdir=None, + def __init__(self, tref, sftfilepath=None, minStartTime=None, maxStartTime=None, minCoverFreq=None, maxCoverFreq=None, detector=None, earth_ephem=None, sun_ephem=None, @@ -173,8 +173,8 @@ class ComputeFstat(object): ---------- tref: int GPS seconds of the reference time. - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file + sftfilepath: str + File patern to match SFTs minCoverFreq, maxCoverFreq: float The min and max cover frequency passed to CreateFstatInput, if either is None the range of frequencies in the SFT less 1Hz is @@ -214,10 +214,9 @@ class ComputeFstat(object): if self.maxStartTime: constraints.maxStartTime = lal.LIGOTimeGPS(self.maxStartTime) - self.sft_filepath = self.sftdir+'/*_'+self.sftlabel+"*sft" logging.info('Loading data matching pattern {}'.format( - self.sft_filepath)) - SFTCatalog = lalpulsar.SFTdataFind(self.sft_filepath, constraints) + self.sftfilepath)) + SFTCatalog = lalpulsar.SFTdataFind(self.sftfilepath, constraints) names = list(set([d.header.name for d in SFTCatalog.data])) epochs = [d.header.epoch for d in SFTCatalog.data] logging.info( @@ -361,7 +360,7 @@ class SemiCoherentGlitchSearch(BaseSearchClass, ComputeFstat): @initializer def __init__(self, label, outdir, tref, tstart, tend, nglitch=0, - sftlabel=None, sftdir=None, theta0_idx=0, BSGL=False, + sftfilepath=None, theta0_idx=0, BSGL=False, minCoverFreq=None, maxCoverFreq=None, minStartTime=None, maxStartTime=None, detector=None, earth_ephem=None, sun_ephem=None): @@ -375,9 +374,8 @@ class SemiCoherentGlitchSearch(BaseSearchClass, ComputeFstat): nglitch: int The (fixed) number of glitches; this can zero, but occasionally this causes issue (in which case just use ComputeFstat). - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file. If - None use label and outdir. + sftfilepath: str + File patern to match SFTs theta0_idx, int Index (zero-based) of which segment the theta refers to - uyseful if providing a tight prior on theta to allow the signal to jump @@ -395,10 +393,6 @@ class SemiCoherentGlitchSearch(BaseSearchClass, ComputeFstat): If None defaults defined in BaseSearchClass will be used. """ - if self.sftlabel is None: - self.sftlabel = self.label - if self.sftdir is None: - self.sftdir = self.outdir self.fs_file_name = "{}/{}_FS.dat".format(self.outdir, self.label) if self.earth_ephem is None: self.earth_ephem = self.earth_ephem_default @@ -472,7 +466,7 @@ class SemiCoherentGlitchSearch(BaseSearchClass, ComputeFstat): class MCMCSearch(BaseSearchClass): """ MCMC search using ComputeFstat""" @initializer - def __init__(self, label, outdir, sftlabel, sftdir, theta_prior, tref, + def __init__(self, label, outdir, sftfilepath, theta_prior, tref, tstart, tend, nsteps=[100, 100, 100], nwalkers=100, ntemps=1, log10temperature_min=-5, theta_initial=None, scatter_val=1e-4, binary=False, BSGL=False, minCoverFreq=None, maxCoverFreq=None, @@ -481,8 +475,8 @@ class MCMCSearch(BaseSearchClass): Parameters label, outdir: str A label and directory to read/write data from/to - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file + sftfilepath: str + File patern to match SFTs theta_prior: dict Dictionary of priors and fixed values for the search parameters. For each parameters (key of the dict), if it is to be held fixed @@ -534,7 +528,6 @@ class MCMCSearch(BaseSearchClass): self.unpack_input_theta() self.ndim = len(self.theta_keys) self.betas = np.logspace(0, self.log10temperature_min, self.ntemps) - self.sft_filepath = self.sftdir+'/*_'+self.sftlabel+"*sft" if earth_ephem is None: self.earth_ephem = self.earth_ephem_default @@ -559,11 +552,10 @@ class MCMCSearch(BaseSearchClass): def inititate_search_object(self): logging.info('Setting up search object') self.search = ComputeFstat( - tref=self.tref, sftlabel=self.sftlabel, - sftdir=self.sftdir, minCoverFreq=self.minCoverFreq, - maxCoverFreq=self.maxCoverFreq, earth_ephem=self.earth_ephem, - sun_ephem=self.sun_ephem, detector=self.detector, - BSGL=self.BSGL, transient=False, + tref=self.tref, sftfilepath=self.sftfilepath, + minCoverFreq=self.minCoverFreq, maxCoverFreq=self.maxCoverFreq, + earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem, + detector=self.detector, BSGL=self.BSGL, transient=False, minStartTime=self.minStartTime, maxStartTime=self.maxStartTime) def logp(self, theta_vals, theta_prior, theta_keys, search): @@ -1153,7 +1145,7 @@ class MCMCSearch(BaseSearchClass): class MCMCGlitchSearch(MCMCSearch): """ MCMC search using the SemiCoherentGlitchSearch """ @initializer - def __init__(self, label, outdir, sftlabel, sftdir, theta_prior, tref, + def __init__(self, label, outdir, sftfilepath, theta_prior, tref, tstart, tend, nglitch=1, nsteps=[100, 100, 100], nwalkers=100, ntemps=1, log10temperature_min=-5, theta_initial=None, scatter_val=1e-4, dtglitchmin=1*86400, theta0_idx=0, @@ -1164,8 +1156,8 @@ class MCMCGlitchSearch(MCMCSearch): Parameters label, outdir: str A label and directory to read/write data from/to - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file +_ sftfilepath: str + File patern to match SFTs theta_prior: dict Dictionary of priors and fixed values for the search parameters. For each parameters (key of the dict), if it is to be held fixed @@ -1216,7 +1208,7 @@ class MCMCGlitchSearch(MCMCSearch): logging.info(('Set-up MCMC glitch search with {} glitches for model {}' ' on data {}').format(self.nglitch, self.label, - self.sftlabel)) + self.sftfilepath)) if os.path.isdir(outdir) is False: os.mkdir(outdir) self.minStartTime = tstart @@ -1225,7 +1217,6 @@ class MCMCGlitchSearch(MCMCSearch): self.unpack_input_theta() self.ndim = len(self.theta_keys) self.betas = np.logspace(0, self.log10temperature_min, self.ntemps) - self.sft_filepath = self.sftdir+'/*_'+self.sftlabel+"*sft" if earth_ephem is None: self.earth_ephem = self.earth_ephem_default if sun_ephem is None: @@ -1240,8 +1231,8 @@ class MCMCGlitchSearch(MCMCSearch): def inititate_search_object(self): logging.info('Setting up search object') self.search = SemiCoherentGlitchSearch( - label=self.label, outdir=self.outdir, sftlabel=self.sftlabel, - sftdir=self.sftdir, tref=self.tref, tstart=self.tstart, + label=self.label, outdir=self.outdir, sftfilepath=self.sftfilepath, + tref=self.tref, tstart=self.tstart, tend=self.tend, minCoverFreq=self.minCoverFreq, maxCoverFreq=self.maxCoverFreq, earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem, detector=self.detector, BSGL=self.BSGL, @@ -1332,7 +1323,7 @@ class MCMCGlitchSearch(MCMCSearch): class GridSearch(BaseSearchClass): """ Gridded search using ComputeFstat """ @initializer - def __init__(self, label, outdir, sftlabel=None, sftdir=None, F0s=[0], + def __init__(self, label, outdir, sftfilepath, F0s=[0], F1s=[0], F2s=[0], Alphas=[0], Deltas=[0], tref=None, tstart=None, tend=None, minCoverFreq=None, maxCoverFreq=None, earth_ephem=None, sun_ephem=None, detector=None, BSGL=False): @@ -1340,8 +1331,8 @@ class GridSearch(BaseSearchClass): Parameters label, outdir: str A label and directory to read/write data from/to - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file + sftfilepath: str + File patern to match SFTs F0s, F1s, F2s, delta_F0s, delta_F1s, tglitchs, Alphas, Deltas: tuple Length 3 tuple describing the grid for each parameter, e.g [F0min, F0max, dF0], for a fixed value simply give [F0]. @@ -1360,10 +1351,6 @@ class GridSearch(BaseSearchClass): self.minStartTime = tstart self.maxStartTime = tend - if sftlabel is None: - self.sftlabel = self.label - if sftdir is None: - self.sftdir = self.outdir if earth_ephem is None: self.earth_ephem = self.earth_ephem_default if sun_ephem is None: @@ -1377,10 +1364,10 @@ class GridSearch(BaseSearchClass): def inititate_search_object(self): logging.info('Setting up search object') self.search = ComputeFstat( - tref=self.tref, sftlabel=self.sftlabel, - sftdir=self.sftdir, minCoverFreq=self.minCoverFreq, - maxCoverFreq=self.maxCoverFreq, earth_ephem=self.earth_ephem, - sun_ephem=self.sun_ephem, detector=self.detector, transient=False, + tref=self.tref, sftfilepath=self.sftfilepath, + minCoverFreq=self.minCoverFreq, maxCoverFreq=self.maxCoverFreq, + earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem, + detector=self.detector, transient=False, minStartTime=self.minStartTime, maxStartTime=self.maxStartTime, BSGL=self.BSGL) @@ -1483,7 +1470,7 @@ class GridSearch(BaseSearchClass): class GridGlitchSearch(GridSearch): """ Gridded search using the SemiCoherentGlitchSearch """ @initializer - def __init__(self, label, outdir, sftlabel=None, sftdir=None, F0s=[0], + def __init__(self, label, outdir, sftfilepath=None, F0s=[0], F1s=[0], F2s=[0], delta_F0s=[0], delta_F1s=[0], tglitchs=None, Alphas=[0], Deltas=[0], tref=None, tstart=None, tend=None, minCoverFreq=None, maxCoverFreq=None, write_after=1000, @@ -1492,8 +1479,8 @@ class GridGlitchSearch(GridSearch): Parameters label, outdir: str A label and directory to read/write data from/to - sftlabel, sftdir: str - A label and directory in which to find the relevant sft file + sftfilepath: str + File patern to match SFTs F0s, F1s, F2s, delta_F0s, delta_F1s, tglitchs, Alphas, Deltas: tuple Length 3 tuple describing the grid for each parameter, e.g [F0min, F0max, dF0], for a fixed value simply give [F0]. @@ -1510,17 +1497,13 @@ class GridGlitchSearch(GridSearch): """ if tglitchs is None: self.tglitchs = [self.tend] - if sftlabel is None: - self.sftlabel = self.label - if sftdir is None: - self.sftdir = self.outdir if earth_ephem is None: self.earth_ephem = self.earth_ephem_default if sun_ephem is None: self.sun_ephem = self.sun_ephem_default self.search = SemiCoherentGlitchSearch( - label=label, outdir=outdir, sftlabel=sftlabel, sftdir=sftdir, + label=label, outdir=outdir, sftfilepath=self.sftfilepath, tref=tref, tstart=tstart, tend=tend, minCoverFreq=minCoverFreq, maxCoverFreq=maxCoverFreq, earth_ephem=self.earth_ephem, sun_ephem=self.sun_ephem)