diff --git a/main/astrodatagui/FlareSummaryPlotGUI.py b/main/astrodatagui/FlareSummaryPlotGUI.py index 2b4ebf3..505950e 100644 --- a/main/astrodatagui/FlareSummaryPlotGUI.py +++ b/main/astrodatagui/FlareSummaryPlotGUI.py @@ -5,6 +5,10 @@ from matplotlib.figure import Figure from matplotlib.backends.backend_qtagg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) +import numpy as np +import pandas as pd +from itertools import compress + class FlareSummaryPlotGUI(QWidget): def __init__(self, starFLareDictList): @@ -17,12 +21,12 @@ class FlareSummaryPlotGUI(QWidget): self.figure = Figure() self.figureAxis = self.figure.add_subplot() - self.qualityAxis = self.figureAxis.twinx() fc = FigureCanvas(self.figure) toolbar = NavigationToolbar(fc, self) self.buttonGridLayout = QGridLayout() - self.btShow = QPushButton("Show ") + self.btShowFlaresPerStar = QPushButton("Show Flares/Star") + self.btShowFlaresPerStar.clicked.connect(self.btShowFlaresPerStarClicked) self.cbKepler = QCheckBox("Kepler") self.cbKepler.setChecked(True) @@ -43,7 +47,7 @@ class FlareSummaryPlotGUI(QWidget): self.cbSpTypeF.setChecked(True) self.buttonGridLayout.addWidget(QLabel("Plot Types: "), 0, 0) - self.buttonGridLayout.addWidget(self.btShow, 0, 1) + self.buttonGridLayout.addWidget(self.btShowFlaresPerStar, 0, 1) self.buttonGridLayout.addWidget(QLabel("Sources: "), 1, 0) self.buttonGridLayout.addWidget(self.cbKepler, 1, 1) @@ -59,4 +63,89 @@ class FlareSummaryPlotGUI(QWidget): self.mainLayout.addLayout(self.buttonGridLayout) self.mainLayout.addWidget(toolbar) self.mainLayout.addWidget(fc) - self.resize(1000, 800) \ No newline at end of file + self.resize(1000, 800) + + def btShowFlaresPerStarClicked(self): + showSourceFilter = np.full(len(self.starFLareDictList), False) + showSpectralTypeFilter = np.full(len(self.starFLareDictList), False) + data = [] + for entry in self.starFLareDictList: + if((self.cbKepler.isChecked() and entry["Source"] == "Kepler") or + (self.cbK2.isChecked() and entry["Source"] == "K2") or + (self.cbTESS.isChecked() and entry["Source"] == "TESS")): + data.append(entry) + + self.figureAxis.clear() + #data = self.starFLareDictList[showSourceFilter] + x = np.arange(start=1, stop=len(data)+1, step=1, dtype=int) + print(len(data), len(x)) + + Lfilter = []; Mfilter = []; Kfilter = []; Gfilter = []; Ffilter = [] + Unknownfilter = [] + for d in data: + try: + if(d["SpType"][0] == "L"): + LVal = True + MVal = KVal = GVal = FVal = UnknownVal = False + if(d["SpType"][0] == "M"): + MVal = True + LVal = KVal = GVal = FVal = UnknownVal = False + if(d["SpType"][0] == "K"): + KVal = True + MVal = LVal = GVal = FVal = UnknownVal = False + if(d["SpType"][0] == "G"): + GVal = True + MVal = KVal = LVal = FVal = UnknownVal = False + if(d["SpType"][0] == "F"): + FVal = True + MVal = KVal = GVal = LVal = UnknownVal = False + except: + UnknownVal = True + MVal = KVal = GVal = FVal = LVal = False + finally: + Lfilter.append(LVal) + Mfilter.append(MVal) + Kfilter.append(KVal) + Gfilter.append(GVal) + Ffilter.append(FVal) + Unknownfilter.append(UnknownVal) + + data = pd.DataFrame(data) + Lfilter = np.array(Lfilter, dtype=bool) + Mfilter = np.array(Mfilter, dtype=bool) + Kfilter = np.array(Kfilter, dtype=bool) + Gfilter = np.array(Gfilter, dtype=bool) + Ffilter = np.array(Ffilter, dtype=bool) + Unknownfilter = np.array(Unknownfilter, dtype=bool) + #print("L Type stars: ", Lfilter) + print("M Type stars: ", type(Mfilter), Mfilter) + #print("K Type stars: ", Kfilter) + #print("G Type stars: ", Gfilter) + #print("F Type stars: ", Ffilter) + print("x: ", type(x), x) + print("data: ", type(data)) + if(self.cbSpTypeL.isChecked()): + if(np.any(Lfilter)): + self.figureAxis.scatter(x[Lfilter], data[Lfilter]["sapPeaksCount"], marker="o", color="brown", label="L SAP Count") + self.figureAxis.scatter(x[Lfilter], data[Lfilter]["pdcsapPeaksCount"], marker="x", color="brown", label="L PDCSAP Count") + if(self.cbSpTypeM.isChecked()): + if(np.any(Mfilter)): + print(x[Mfilter]) + print(data[Mfilter]) + self.figureAxis.scatter(x[Mfilter], data[Mfilter]["sapPeaksCount"], marker="o", color="red", label="M SAP Count") + self.figureAxis.scatter(x[Mfilter], data[Mfilter]["pdcsapPeaksCount"], marker="x", color="red", label="M PDCSAP Count") + if(self.cbSpTypeK.isChecked()): + if(np.any(Kfilter)): + self.figureAxis.scatter(x[Kfilter], data[Kfilter]["sapPeaksCount"], marker="o", color="orange", label="K SAP Count") + self.figureAxis.scatter(x[Kfilter], data[Kfilter]["pdcsapPeaksCount"], marker="x", color="orange", label="K PDCSAP Count") + if(self.cbSpTypeG.isChecked()): + if(np.any(Gfilter)): + self.figureAxis.scatter(x[Gfilter], data[Gfilter]["sapPeaksCount"], marker="o", color="yellow", label="G SAP Count") + self.figureAxis.scatter(x[Gfilter], data[Gfilter]["pdcsapPeaksCount"], marker="x", color="yellow", label="G PDCSAP Count") + if(self.cbSpTypeF.isChecked()): + if(np.any(Ffilter)): + self.figureAxis.scatter(x[Ffilter], data[Ffilter]["sapPeaksCount"], marker="o", color="greenyellow", label="F SAP Count") + self.figureAxis.scatter(x[Ffilter], data[Ffilter]["pdcsapPeaksCount"], marker="x", color="greenyellow", label="F PDCSAP Count") + + self.figureAxis.set_ylabel("Flare count") + self.figure.canvas.draw_idle() \ No newline at end of file