astrodatagui: FlaredetectorWidget: show 4 highest peaks in the periodogram and print their periods

This commit is contained in:
2024-03-26 11:28:58 +01:00
parent ca2d09f932
commit f756873687
+27 -5
View File
@@ -6,6 +6,8 @@ from matplotlib.backends.backend_qtagg import (
from astropy.io import fits
import lightkurve as lk
from ...flaredetector.util import findMaxIndices
class FlaredetectorWidget(QtWidgets.QWidget):
def __init__(self, name):
super(FlaredetectorWidget, self).__init__()
@@ -25,10 +27,20 @@ class FlaredetectorWidget(QtWidgets.QWidget):
self.periodogramInfoLayout = QtWidgets.QHBoxLayout()
self.periodogramInfoGroupBox.setLayout(self.periodogramInfoLayout)
self.periodogramInfoGroupBox.setVisible(False)
self.lbMaxPowerPeriodText = QtWidgets.QLabel("Max Power Period: ")
self.lbMaxPowerPeriod = QtWidgets.QLabel("")
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriodText)
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriod)
self.lbMaxPowerPeriod1 = QtWidgets.QLabel("")
self.lbMaxPowerPeriod2 = QtWidgets.QLabel("")
self.lbMaxPowerPeriod3 = QtWidgets.QLabel("")
self.lbMaxPowerPeriod4 = QtWidgets.QLabel("")
self.periodogramInfoLayout.addWidget(QtWidgets.QLabel("1. Max Power: "))
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriod1)
self.periodogramInfoLayout.addWidget(QtWidgets.QLabel("2. Max Power: "))
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriod2)
self.periodogramInfoLayout.addWidget(QtWidgets.QLabel("3. Max Power: "))
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriod3)
self.periodogramInfoLayout.addWidget(QtWidgets.QLabel("4. Max Power: "))
self.periodogramInfoLayout.addWidget(self.lbMaxPowerPeriod4)
sp = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
self.periodogramInfoGroupBox.setSizePolicy(sp)
self.mainLayout.addWidget(self.periodogramInfoGroupBox)
self.fluxType = "sap_flux"
@@ -183,7 +195,13 @@ class FlaredetectorWidget(QtWidgets.QWidget):
if(self.PeriodogramState["Enabled"]):
lc = lc.to_periodogram(method=self.PeriodogramState["Method"])
label = "Periodogram"
self.lbMaxPowerPeriod.setText(str(lc.period_at_max_power))
maxPowers = findMaxIndices(lc.power, 4)
print(maxPowers)
self.lbMaxPowerPeriod1.setText(str(lc.period[maxPowers[0]]))
self.lbMaxPowerPeriod2.setText(str(lc.period[maxPowers[1]]))
self.lbMaxPowerPeriod3.setText(str(lc.period[maxPowers[2]]))
self.lbMaxPowerPeriod4.setText(str(lc.period[maxPowers[3]]))
self.periodogramInfoGroupBox.setVisible(self.PeriodogramState["Enabled"])
@@ -192,6 +210,10 @@ class FlaredetectorWidget(QtWidgets.QWidget):
lc.scatter(label=label, ax=self.figureAxis)
elif(self.PeriodogramState["Enabled"]):
lc.plot(label=label, ax=self.figureAxis, view=self.PeriodogramState["View"])
if(self.PeriodogramState["View"] == "period"):
self.figureAxis.plot(lc.period[maxPowers], lc.power[maxPowers], "x")
if(self.PeriodogramState["View"] == "frequency"):
self.figureAxis.plot(lc.frequency[maxPowers], lc.power[maxPowers], "x")
else:
lc.plot(label=label, ax=self.figureAxis)
self.figure.canvas.draw_idle()