From dc9d0635dd18c5c8cdccfae04c3b3823e4f32374 Mon Sep 17 00:00:00 2001 From: SGCMarkus Date: Mon, 18 Mar 2024 08:42:48 +0100 Subject: [PATCH] astrodatagui: wire up checkbox changed events for new FlaredetectionWidget --- main/astrodatagui/AstrodataGUI.py | 129 +++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 37 deletions(-) diff --git a/main/astrodatagui/AstrodataGUI.py b/main/astrodatagui/AstrodataGUI.py index 3befcd5..96c7bd9 100644 --- a/main/astrodatagui/AstrodataGUI.py +++ b/main/astrodatagui/AstrodataGUI.py @@ -1,4 +1,5 @@ -from PyQt5 import QtWidgets, uic +from PyQt5 import QtWidgets, uic, Qt +from PyQt5 import QtCore import os from astroquery.simbad import Simbad @@ -22,19 +23,22 @@ class AstrodataGUI(QtWidgets.QMainWindow): self.listDownloaded.itemClicked.connect(self.starSelected) self.listSequences.itemClicked.connect(self.sequenceSelected) - self.cbEnableNormalize.stateChanged.connect(self.plotOptionsCBChecked) - self.cbEnableFlattenPlot.stateChanged.connect(self.plotOptionsCBChecked) - self.cbEnableRemoveOutliers.stateChanged.connect(self.plotOptionsCBChecked) - self.cbEnableRemoveNans.stateChanged.connect(self.plotOptionsCBChecked) - self.cbEnableFold.stateChanged.connect(self.plotOptionsCBChecked) - self.cbEnableBin.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotNormalizeEnable.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotRemoveOutliersEnable.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotRemoveNansEnable.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotBinEnable.stateChanged.connect(self.plotOptionsCBChecked) + self.cbPlotFlattenPlotEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) + self.cbPlotFoldEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) + self.cbPlotPeriodogramEnable.stateChanged.connect(self.plotOptionsExclusiveCBChecked) + + #plotExclusiveButtonGroup = Qt.QButtonGroup(self) + #plotExclusiveButtonGroup.addButton(self.cbPlotFlattenPlotEnable) + #plotExclusiveButtonGroup.addButton(self.cbPlotFoldEnable) + #plotExclusiveButtonGroup.addButton(self.cbPlotPeriodogramEnable) self.setupCustomSimbadQueries() - self.show() - self.loadDB() - self.updateStarList() def setupCustomSimbadQueries(self): @@ -166,34 +170,85 @@ class AstrodataGUI(QtWidgets.QMainWindow): source = seqText[0] seq = seqText[1] filePath = self.starDB.getFilePath(mainName, source, seq) - self.flaredetectorPreview.plotFitsFile(filePath, mainName) + self.flaredetectorPreview.setFitsFile(filePath, mainName) def plotOptionsCBChecked(self, state): - normalize = self.cbEnableNormalize.isChecked() - flatten = self.cbEnableFlattenPlot.isChecked() - remOutliers = self.cbEnableRemoveOutliers.isChecked() - remNans = self.cbEnableRemoveNans.isChecked() - fold = self.cbEnableFold.isChecked() - binC = self.cbEnableBin.isChecked() - if(fold): - try: - period = float(self.edFoldPeriod.text()) - epoch = float(self.edFoldEpochTime.text()) - except: - fold = False - if(binC): - try: - binSize = float(self.edBinSize.text()) - except: - binC = False - foldList = [fold, 0, 0] - if(fold): - foldList[1] = period - foldList[2] = epoch + match(self.sender()): + case self.cbPlotNormalizeEnable: + self.updateFlaredetectioWidgetNormalize() - binList = [binC, 0] - if(binC): - binList[1] = binSize + case self.cbPlotRemoveOutliersEnable: + self.updateFlaredetectioWidgetRemoveOutliers() - self.flaredetectorPreview.updatePlot(normalize, flatten, remOutliers, - remNans, foldList, binList) \ No newline at end of file + case self.cbPlotRemoveNansEnable: + self.updateFlaredetectioWidgetRemoveNans() + + case self.cbPlotBinEnable: + self.updateFlaredetectioWidgetBin() + + def plotOptionsExclusiveCBChecked(self, state): + print(f"{self.sender().objectName()} is set to {state}") + if(state == QtCore.Qt.Checked): + match(self.sender()): + case self.cbPlotFlattenPlotEnable: + self.cbPlotFoldEnable.blockSignals(True) + self.cbPlotFoldEnable.setChecked(False) + self.cbPlotFoldEnable.blockSignals(False) + self.cbPlotPeriodogramEnable.blockSignals(True) + self.cbPlotPeriodogramEnable.setChecked(False) + self.cbPlotPeriodogramEnable.blockSignals(False) + self.updateFlaredetectioWidgetFlatten() + + case self.cbPlotFoldEnable: + self.cbPlotFlattenPlotEnable.blockSignals(True) + self.cbPlotFlattenPlotEnable.setChecked(False) + self.cbPlotFlattenPlotEnable.blockSignals(False) + self.cbPlotPeriodogramEnable.blockSignals(True) + self.cbPlotPeriodogramEnable.setChecked(False) + self.cbPlotPeriodogramEnable.blockSignals(False) + self.updateFlaredetectioWidgetFold() + + case self.cbPlotPeriodogramEnable: + self.cbPlotFoldEnable.blockSignals(True) + self.cbPlotFoldEnable.setChecked(False) + self.cbPlotFoldEnable.blockSignals(False) + self.cbPlotFoldEnable.blockSignals(True) + self.cbPlotFoldEnable.setChecked(False) + self.cbPlotFoldEnable.blockSignals(False) + self.updateFlaredetectioWidgetPeriodogram() + + def updateFlaredetectioWidgetNormalize(self): + normalizeEnabled = self.cbPlotNormalizeEnable.isChecked() + normalizeUnit = self.comboPlotNormalizeUnit.currentText() + self.flaredetectorPreview.setNormalizeState(normalizeEnabled, normalizeUnit) + + def updateFlaredetectioWidgetRemoveOutliers(self): + remOutliersEnabled = self.cbPlotRemoveOutliersEnable.isChecked() + remOutliersSigma = float(self.sbRemoveOutliersSigma.value()) + self.flaredetectorPreview.setRemoveOutliersState(remOutliersEnabled, remOutliersSigma) + + def updateFlaredetectioWidgetRemoveNans(self): + remNansEnabled = self.cbPlotRemoveNansEnable.isChecked() + self.flaredetectorPreview.setRemoveNansState(remNansEnabled) + + def updateFlaredetectioWidgetBin(self): + binEnabled = self.cbPlotBinEnable.isChecked() + binSize = int(self.edBinSize.text()) + self.flaredetectorPreview.setBinState(binEnabled, binSize) + + def updateFlaredetectioWidgetFlatten(self): + flattenEnabled = self.cbPlotFlattenPlotEnable.isChecked() + windowLength = int(self.edPlotFlattenWL.text()) + po = int(self.edPlotFlattenPO.text()) + self.flaredetectorPreview.setFlattenState(flattenEnabled, windowLength, po) + + def updateFlaredetectioWidgetFold(self): + foldEnabled = self.cbPlotFoldEnable.isChecked() + period = float(self.edPlotFoldPeriod.text()) + epoch = float(self.edPlotFoldEpochTime.text()) + self.flaredetectorPreview.setFoldState(foldEnabled, period, epoch) + + def updateFlaredetectioWidgetPeriodogram(self): + periodogramEnabled = self.cbPlotPeriodogramEnable.isChecked() + method = self.comboPlotPeriodogramMethod.currentText() + self.flaredetectorPreview.setPeriodogramState(periodogramEnabled, method) \ No newline at end of file