astrodatagui: FlaredetectorWidget: properly define states of the widget

This commit is contained in:
2024-03-15 13:48:04 +01:00
parent 0c6963aded
commit 1165a10fd8
+86 -28
View File
@@ -20,44 +20,102 @@ class FlaredetectorWidget(QtWidgets.QWidget):
self.mainLayout.addWidget(toolbar)
self.mainLayout.addWidget(fc)
def plotFitsFile(self, fitsFilePath, mainName: str):
print(f"Plotting: {fitsFilePath}")
self.figureAxis.clear()
self.currentLC = lk.read(fitsFilePath)
self.currentLC.flux = self.currentLC['sap_flux']
self.currentMainName = mainName
label = f"{mainName} - SAP Flux"
self.currentLC.plot(column="sap_flux", label=label, ax=self.figureAxis)
self.figure.canvas.draw_idle()
self.fluxType = "sap_flux"
self.NormalizeState = {"Enabled": False, "Scale": "unscaled"}
self.RemoveOutliersState = {"Enabled": False, "Sigma": 5.0}
self.RemoveNansState = {"Enabled": False}
self.BinState = {"Enabled": False, "Size": 1}
self.FlattenState = {"Enabled": False, "WindowLength": 101, "PolynomialOrder": 2}
self.FoldState = {"Enabled": False, "Period": 1, "EpochTime": 0}
self.PeriodogramState = {"Enabled": False, "Method": "lombscargle"}
def updatePlot(self, normalize: bool, flatten: bool, remOutliers: bool,
remNans: bool, fold: list, binList: list):
def setFitsFile(self, fitsFilePath, mainName: str):
print(f"Plotting: {fitsFilePath}")
self.currentLC = lk.read(fitsFilePath)
self.currentMainName = mainName
def setNormalizeState(self, enabled: bool, scale: str):
self.NormalizeState["Enabled"] = enabled
if(scale not in ["unscaled", "percent", "ppt", "ppm"]):
print(f"Scale not supported: {scale}, setting default unscaled")
scale = "unscaled"
self.NormalizeState["Scale"] = scale
def setRemoveOutliersState(self, enabled: bool, sigma: float):
self.RemoveOutliersState["Enabled"] = enabled
if(sigma < 0):
print(f"Negative sigma detected, setting default 5.0")
sigma = 5.0
self.RemoveOutliersState["Sigma"] = sigma
def setRemoveNansState(self, enabled: bool):
self.RemoveNansState["Enabled"] = enabled
def setBinState(self, enabled: bool, binSize: float):
self.BinState["Enabled"] = enabled
if(binSize < 0):
print(f"Negative binSize detected, setting default 1")
binSize = 1
self.BinState["Size"] = binSize
def setFlattenState(self, enabled: bool, windowLength: int, polyorder: int):
self.FlattenState["Enabled"] = enabled
if(windowLength < 0):
print(f"Negative windowLength detected, setting default 101")
windowLength = 101
if(polyorder < 0):
print(f"Negative polyorder detected, setting default 2")
polyorder = 2
self.FlattenState["WindowLength"] = windowLength
self.FlattenState["PolynomialOrder"] = polyorder
def setFoldState(self, enabled: bool, period: float, epoch: float):
self.FoldState["Enabled"] = enabled
if(period < 0):
print(f"Negative period detected, setting default 1")
period = 1
if(epoch < 0):
print(f"Negative epoch detected, setting default 0")
epoch = 0
self.FoldState["Period"] = period
self.FoldState["EpochTime"] = epoch
def setPeriodogramState(self, enabled: bool, method: str):
self.PeriodogramState["Enabled"] = enabled
if(method not in ["lombscargle", "boxleastsquare", "ls", "bls"]):
print(f"Unsupported method detected, setting default lombscargle")
method = "lombscargle"
self.PeriodogramState["Method"] = method
def updatePlot(self):
lc = self.currentLC
label = f"{self.currentMainName}"
if(normalize):
lc = lc.normalize()
if(self.NormalizeState["Enabled"]):
lc = lc.normalize(unit=self.NormalizeState["Scale"])
label += " - normalized"
if(flatten):
lc = lc.flatten()
label += " - flattened"
if(remOutliers):
lc = lc.remove_outliers()
if(self.RemoveOutliersState["Enabled"]):
lc = lc.remove_outliers(sigma=self.RemoveOutliersState["Sigma"])
label += " - no ol"
if(remNans):
if(self.RemoveNansState["Enabled"]):
lc = lc.remove_nans()
label += " - no nans"
if(len(fold) == 3 and fold[0]):
period = float(fold[1])
epoch = float(fold[2])
lc = lc.fold(period=period, epoch_time=epoch)
label += " - folded"
if(len(binList) == 2 and binList[0]):
binSize = float(binList[1])
lc = lc.bin(time_bin_size=binSize)
if(self.BinState["Enabled"]):
lc = lc.bin(time_bin_size=self.RemoveOutliersState["Size"])
label += " - binned"
if(self.FlattenState["Enabled"]):
lc = lc.flatten(window_length=self.FlattenState["WindowLength"],
polyorder=self.FlattenState["PolynomialOrder"])
label += " - flattened"
if(self.FoldState["Enabled"]):
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"])
label = "Periodogram"
self.figureAxis.clear()
if(fold[0]):
if(self.FoldState["Enabled"]):
lc.scatter(label=label, ax=self.figureAxis)
else:
lc.plot(label=label, ax=self.figureAxis)