diff --git a/pyfstat/core.py b/pyfstat/core.py index cea5026cae032904b0fe08f535015761c338a978..d68ebabbac7a57204ec4d215fc0ab403d010154f 100755 --- a/pyfstat/core.py +++ b/pyfstat/core.py @@ -542,7 +542,8 @@ class SemiCoherentSearch(BaseSearchClass, ComputeFstat): def run_semi_coherent_computefstatistic_single_point( self, F0, F1, F2, Alpha, Delta, asini=None, - period=None, ecc=None, tp=None, argp=None): + period=None, ecc=None, tp=None, argp=None, + record_segments=False): """ Returns twoF or ln(BSGL) semi-coherently at a single point """ self.PulsarDopplerParams.fkdot = np.array([F0, F1, F2, 0, 0, 0, 0]) @@ -573,6 +574,8 @@ class SemiCoherentSearch(BaseSearchClass, ComputeFstat): # return log10_BSGL/np.log10(np.exp(1)) detStat = 0 + if record_segments: + self.detStat_per_segment = [] for tstart, tend in zip(self.tboundaries[:-1], self.tboundaries[1:]): self.windowRange.t0 = int(tstart) # TYPE UINT4 self.windowRange.tau = int(tend - tstart) # TYPE UINT4 @@ -581,24 +584,25 @@ class SemiCoherentSearch(BaseSearchClass, ComputeFstat): self.FstatResults.multiFatoms[0], self.windowRange, False) if self.BSGL is False: - detStat += 2*FS.F_mn.data[0][0] - continue - - FstatResults_single = copy.copy(self.FstatResults) - FstatResults_single.lenth = 1 - FstatResults_single.data = self.FstatResults.multiFatoms[0].data[0] - FS0 = lalpulsar.ComputeTransientFstatMap( - FstatResults_single.multiFatoms[0], self.windowRange, False) - FstatResults_single.data = self.FstatResults.multiFatoms[0].data[1] - FS1 = lalpulsar.ComputeTransientFstatMap( - FstatResults_single.multiFatoms[0], self.windowRange, False) - - self.twoFX[0] = 2*FS0.F_mn.data[0][0] - self.twoFX[1] = 2*FS1.F_mn.data[0][0] - log10_BSGL = lalpulsar.ComputeBSGL( - 2*FS.F_mn.data[0][0], self.twoFX, self.BSGLSetup) - - detStat += log10_BSGL/np.log10(np.exp(1)) + d_detStat = 2*FS.F_mn.data[0][0] + else: + FstatResults_single = copy.copy(self.FstatResults) + FstatResults_single.lenth = 1 + FstatResults_single.data = self.FstatResults.multiFatoms[0].data[0] + FS0 = lalpulsar.ComputeTransientFstatMap( + FstatResults_single.multiFatoms[0], self.windowRange, False) + FstatResults_single.data = self.FstatResults.multiFatoms[0].data[1] + FS1 = lalpulsar.ComputeTransientFstatMap( + FstatResults_single.multiFatoms[0], self.windowRange, False) + + self.twoFX[0] = 2*FS0.F_mn.data[0][0] + self.twoFX[1] = 2*FS1.F_mn.data[0][0] + log10_BSGL = lalpulsar.ComputeBSGL( + 2*FS.F_mn.data[0][0], self.twoFX, self.BSGLSetup) + d_detStat = log10_BSGL/np.log10(np.exp(1)) + detStat += d_detStat + if record_segments: + self.detStat_per_segment.append(d_detStat) return detStat