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)
if self.t0Band is None: 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.t0Band = 0
self.windowRange.dt0 = 1 self.windowRange.tau = int(self.maxStartTime-self.minStartTime)
else:
if not isinstance(self.t0Band, int):
logging.warn('Casting non-integer t0Band={} to int...'
.format(self.t0Band))
self.t0Band = int(self.t0Band)
self.windowRange.t0Band = self.t0Band
self.windowRange.dt0 = self.Tsft
if self.tauBand is None:
self.windowRange.tauBand = 0 self.windowRange.tauBand = 0
self.windowRange.dtau = 1 else: # user-set bands and spacings
else: if self.t0Band is None:
if not isinstance(self.tauBand, int): self.windowRange.t0Band = 0
logging.warn('Casting non-integer tauBand={} to int...' else:
.format(self.tauBand)) if not isinstance(self.t0Band, int):
self.tauBand = int(self.tauBand) logging.warn('Casting non-integer t0Band={} to int...'
self.windowRange.tauBand = self.tauBand .format(self.t0Band))
self.windowRange.dtau = self.Tsft self.t0Band = int(self.t0Band)
self.windowRange.t0Band = self.t0Band
if self.dt0:
self.windowRange.dt0 = self.dt0
if self.tauBand is None:
self.windowRange.tauBand = 0
else:
if not isinstance(self.tauBand, int):
logging.warn('Casting non-integer tauBand={} to int...'
.format(self.tauBand))
self.tauBand = int(self.tauBand)
self.windowRange.tauBand = self.tauBand
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,
......
Markdown is supported
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