Commit b23ff98a authored by Gregory Ashton's avatar Gregory Ashton
Browse files

Merge branch 'transientParamsFixes' into 'master'

transients: fix window=none case and allow custom dt0, dtau

See merge request GregAshton/PyFstat!11
parents e4791e72 9f616cfc
...@@ -332,6 +332,7 @@ class ComputeFstat(BaseSearchClass): ...@@ -332,6 +332,7 @@ class ComputeFstat(BaseSearchClass):
def __init__(self, tref, sftfilepattern=None, minStartTime=None, def __init__(self, tref, sftfilepattern=None, minStartTime=None,
maxStartTime=None, binary=False, BSGL=False, maxStartTime=None, binary=False, BSGL=False,
transientWindowType=None, t0Band=None, tauBand=None, transientWindowType=None, t0Band=None, tauBand=None,
dt0=None, dtau=None,
detectors=None, minCoverFreq=None, maxCoverFreq=None, detectors=None, minCoverFreq=None, maxCoverFreq=None,
injectSources=None, injectSqrtSX=None, assumeSqrtSX=None, injectSources=None, injectSqrtSX=None, assumeSqrtSX=None,
SSBprec=None): SSBprec=None):
...@@ -360,6 +361,9 @@ class ComputeFstat(BaseSearchClass): ...@@ -360,6 +361,9 @@ class ComputeFstat(BaseSearchClass):
and tau in (2*Tsft,2*Tsft+tauBand). and tau in (2*Tsft,2*Tsft+tauBand).
if =0, only compute CW Fstat with t0=minStartTime, if =0, only compute CW Fstat with t0=minStartTime,
tau=maxStartTime-minStartTime. tau=maxStartTime-minStartTime.
dt0, dtau: int
grid resolutions in transient start-time and duration,
both default to Tsft
detectors : str detectors : str
Two character reference to the data to use, specify None for no Two character reference to the data to use, specify None for no
contraint. If multiple-separate by comma. contraint. If multiple-separate by comma.
...@@ -616,27 +620,38 @@ class ComputeFstat(BaseSearchClass): ...@@ -616,27 +620,38 @@ class ComputeFstat(BaseSearchClass):
.format(self.transientWindowType, .format(self.transientWindowType,
', '.join(transientWindowTypes))) ', '.join(transientWindowTypes)))
# default spacing
self.Tsft = int(1.0/SFTCatalog.data[0].header.deltaF) self.Tsft = int(1.0/SFTCatalog.data[0].header.deltaF)
self.windowRange.dt0 = self.Tsft
self.windowRange.dtau = self.Tsft
# special treatment of window_type = none ==> replace by rectangular window spanning all the data
if self.windowRange.type == lalpulsar.TRANSIENT_NONE:
self.windowRange.t0 = int(self.minStartTime)
self.windowRange.t0Band = 0
self.windowRange.tau = int(self.maxStartTime-self.minStartTime)
self.windowRange.tauBand = 0
else: # user-set bands and spacings
if self.t0Band is None: if self.t0Band is None:
self.windowRange.t0Band = 0 self.windowRange.t0Band = 0
self.windowRange.dt0 = 1
else: else:
if not isinstance(self.t0Band, int): if not isinstance(self.t0Band, int):
logging.warn('Casting non-integer t0Band={} to int...' logging.warn('Casting non-integer t0Band={} to int...'
.format(self.t0Band)) .format(self.t0Band))
self.t0Band = int(self.t0Band) self.t0Band = int(self.t0Band)
self.windowRange.t0Band = self.t0Band self.windowRange.t0Band = self.t0Band
self.windowRange.dt0 = self.Tsft if self.dt0:
self.windowRange.dt0 = self.dt0
if self.tauBand is None: if self.tauBand is None:
self.windowRange.tauBand = 0 self.windowRange.tauBand = 0
self.windowRange.dtau = 1
else: else:
if not isinstance(self.tauBand, int): if not isinstance(self.tauBand, int):
logging.warn('Casting non-integer tauBand={} to int...' logging.warn('Casting non-integer tauBand={} to int...'
.format(self.tauBand)) .format(self.tauBand))
self.tauBand = int(self.tauBand) self.tauBand = int(self.tauBand)
self.windowRange.tauBand = self.tauBand self.windowRange.tauBand = self.tauBand
self.windowRange.dtau = self.Tsft if self.dtau:
self.windowRange.dtau = self.dtau
def get_fullycoherent_twoF(self, tstart, tend, F0, F1, F2, Alpha, Delta, def get_fullycoherent_twoF(self, tstart, tend, F0, F1, F2, Alpha, Delta,
asini=None, period=None, ecc=None, tp=None, asini=None, period=None, ecc=None, tp=None,
......
...@@ -353,6 +353,7 @@ class TransientGridSearch(GridSearch): ...@@ -353,6 +353,7 @@ class TransientGridSearch(GridSearch):
detectors=None, SSBprec=None, injectSources=None, detectors=None, SSBprec=None, injectSources=None,
input_arrays=False, assumeSqrtSX=None, input_arrays=False, assumeSqrtSX=None,
transientWindowType=None, t0Band=None, tauBand=None, transientWindowType=None, t0Band=None, tauBand=None,
dt0=None, dtau=None,
outputTransientFstatMap=False): outputTransientFstatMap=False):
""" """
Parameters Parameters
...@@ -380,6 +381,9 @@ class TransientGridSearch(GridSearch): ...@@ -380,6 +381,9 @@ class TransientGridSearch(GridSearch):
and tau in (2*Tsft,2*Tsft+tauBand). and tau in (2*Tsft,2*Tsft+tauBand).
if =0, only compute CW Fstat with t0=minStartTime, if =0, only compute CW Fstat with t0=minStartTime,
tau=maxStartTime-minStartTime. tau=maxStartTime-minStartTime.
dt0, dtau: int
grid resolutions in transient start-time and duration,
both default to Tsft
outputTransientFstatMap: bool outputTransientFstatMap: bool
if true, write output files for (t0,tau) Fstat maps if true, write output files for (t0,tau) Fstat maps
(one file for each doppler grid point!) (one file for each doppler grid point!)
...@@ -404,6 +408,7 @@ class TransientGridSearch(GridSearch): ...@@ -404,6 +408,7 @@ class TransientGridSearch(GridSearch):
detectors=self.detectors, detectors=self.detectors,
transientWindowType=self.transientWindowType, transientWindowType=self.transientWindowType,
t0Band=self.t0Band, tauBand=self.tauBand, t0Band=self.t0Band, tauBand=self.tauBand,
dt0=self.dt0, dtau=self.dtau,
minStartTime=self.minStartTime, maxStartTime=self.maxStartTime, minStartTime=self.minStartTime, maxStartTime=self.maxStartTime,
BSGL=self.BSGL, SSBprec=self.SSBprec, BSGL=self.BSGL, SSBprec=self.SSBprec,
injectSources=self.injectSources, injectSources=self.injectSources,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment