From c4a0dc766bc222ec87562dd21b6dd85387d91484 Mon Sep 17 00:00:00 2001 From: SGCMarkus Date: Fri, 11 Apr 2025 13:41:08 +0200 Subject: [PATCH] Add UI option to optimize the lightcurve fold --- main/astrodatagui/AstrodataGUI.py | 7 +- main/astrodatagui/astrodatagui.ui | 118 +++++++++++--------- main/astrodatagui/ui/FlaredetectorWidget.py | 10 +- main/flaredetector/util.py | 5 +- 4 files changed, 83 insertions(+), 57 deletions(-) diff --git a/main/astrodatagui/AstrodataGUI.py b/main/astrodatagui/AstrodataGUI.py index 0b4cdb1..fe01efc 100644 --- a/main/astrodatagui/AstrodataGUI.py +++ b/main/astrodatagui/AstrodataGUI.py @@ -39,6 +39,7 @@ class AstrodataGUI(QtWidgets.QMainWindow): self.cbPlotRemoveOutliersEnable.stateChanged.connect(self.plotOptionsCBChecked) self.cbPlotRemoveNansEnable.stateChanged.connect(self.plotOptionsCBChecked) self.cbPlotBinEnable.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotFoldOptimize.stateChanged.connect(self.plotOptionsCBChecked) self.cbPlotFlattenPlotEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) self.cbPlotFoldEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) self.cbPlotPeriodogramEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) @@ -281,6 +282,9 @@ class AstrodataGUI(QtWidgets.QMainWindow): case self.cbPlotBinEnable: self.updateFlaredetectionWidgetBin() + case self.cbPlotFoldOptimize: + self.updateFlaredetectionWidgetFold() + def plotOptionsExclusiveCBChecked(self, state): print(f"{self.sender().objectName()} is set to {state}") if(state == QtCore.Qt.Checked): @@ -395,13 +399,14 @@ class AstrodataGUI(QtWidgets.QMainWindow): def updateFlaredetectionWidgetFold(self): foldEnabled = self.cbPlotFoldEnable.isChecked() + optimizeEnabled = self.cbPlotFoldOptimize.isChecked() try: period = float(self.edPlotFoldPeriod.text()) epoch = float(self.edPlotFoldEpochTime.text()) except: print(f"Invalid period/epoch detected, aborting") return - self.flaredetectorPreview.setFoldState(foldEnabled, period, epoch) + self.flaredetectorPreview.setFoldState(foldEnabled, period, epoch, optimizeEnabled) def updateFlaredetectionWidgetPeriodogram(self): periodogramEnabled = self.cbPlotPeriodogramEnable.isChecked() diff --git a/main/astrodatagui/astrodatagui.ui b/main/astrodatagui/astrodatagui.ui index 6061e27..93484fd 100644 --- a/main/astrodatagui/astrodatagui.ui +++ b/main/astrodatagui/astrodatagui.ui @@ -708,57 +708,7 @@ - - - - - 0 - 0 - - - - - 60 - 0 - - - - - 60 - 16777215 - - - - Epoch Time: - - - - - - - - 0 - 0 - - - - - 60 - 0 - - - - - 60 - 16777215 - - - - Period: - - - - + @@ -783,7 +733,7 @@ - + @@ -808,6 +758,56 @@ + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 60 + 16777215 + + + + Period: + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 60 + 16777215 + + + + Epoch Time: + + + @@ -822,6 +822,20 @@ + + + + + + + + + + + Optimize: + + + diff --git a/main/astrodatagui/ui/FlaredetectorWidget.py b/main/astrodatagui/ui/FlaredetectorWidget.py index d86283d..d924cf5 100644 --- a/main/astrodatagui/ui/FlaredetectorWidget.py +++ b/main/astrodatagui/ui/FlaredetectorWidget.py @@ -156,8 +156,9 @@ class FlaredetectorWidget(QtWidgets.QWidget): self.updateFit() self.updatePlot() - def setFoldState(self, enabled: bool, period: float, epoch: float): + def setFoldState(self, enabled: bool, period: float, epoch: float, optimize: bool): self.FoldState["Enabled"] = enabled + self.FoldState["Optimize"] = optimize if(period < 0): print(f"Negative period detected, setting default 1") period = 1 @@ -246,8 +247,11 @@ class FlaredetectorWidget(QtWidgets.QWidget): lc = self.currentFlattenLC label += " - flattened" if(self.FoldState["Enabled"]): - lc = lc.fold(period=self.FoldState["Period"], - epoch_time=self.FoldState["EpochTime"]) + if(self.FoldState["Optimize"]): + pass + else: + lc = lc.fold(period=self.FoldState["Period"], + epoch_time=self.FoldState["EpochTime"]) label += " - folded" if(self.PeriodogramState["Enabled"]): lc = lc.to_periodogram(method=self.PeriodogramState["Method"]) diff --git a/main/flaredetector/util.py b/main/flaredetector/util.py index 98df7e1..075f385 100644 --- a/main/flaredetector/util.py +++ b/main/flaredetector/util.py @@ -390,4 +390,7 @@ def plotPhaseRangesNearPeak(indices, phase, ax=None): ax.axvline(phase[l], color="orange") def getEpochTime(lc): - return lc.time.value[argrelextrema(np.asarray(lc.flux.value), np.less, order=500)[0]][0] \ No newline at end of file + return lc.time.value[argrelextrema(np.asarray(lc.flux.value), np.less, order=500)[0]][0] + +def getOptimizedFold(normalizedLC, period): + pass