diff --git a/main/astrodatagui/FlareSummaryPlotGUI.py b/main/astrodatagui/FlareSummaryPlotGUI.py index 8e99de2..211f5a1 100644 --- a/main/astrodatagui/FlareSummaryPlotGUI.py +++ b/main/astrodatagui/FlareSummaryPlotGUI.py @@ -41,6 +41,8 @@ class FlareSummaryPlotGUI(QWidget): self.btShowFlaresPerFile.clicked.connect(self.btShowFlaresPerFileClicked) self.btShowFlaresPerStar = QPushButton("Show Flares/Star") self.btShowFlaresPerStar.clicked.connect(self.btShowFlaresPerStarClicked) + self.btShowFlaresPerStarNormalized = QPushButton("Show Flares/Star Normalized") + self.btShowFlaresPerStarNormalized.clicked.connect(self.btShowFlaresPerStarNormalizedClicked) self.cbKepler = QCheckBox("Kepler") self.cbKepler.setChecked(True) @@ -65,6 +67,7 @@ class FlareSummaryPlotGUI(QWidget): self.buttonGridLayout.addWidget(QLabel("Plot Types: "), 0, 0) self.buttonGridLayout.addWidget(self.btShowFlaresPerFile, 0, 1) self.buttonGridLayout.addWidget(self.btShowFlaresPerStar, 0, 2) + self.buttonGridLayout.addWidget(self.btShowFlaresPerStarNormalized, 0, 3) self.buttonGridLayout.addWidget(QLabel("Sources: "), 1, 0) self.buttonGridLayout.addWidget(self.cbKepler, 1, 1) @@ -233,4 +236,97 @@ class FlareSummaryPlotGUI(QWidget): self.figureAxis.set_ylabel("Flare count") self.figureAxis.set_xlabel("Star Number") self.figureAxis.legend() + self.figure.canvas.draw_idle() + + def btShowFlaresPerStarNormalizedClicked(self): + data = self.starFLareDictList.drop(columns=['Distance', + 'DistanceUnit', + 'FilePath', + 'RotVel', + 'RotVelUnit', + 'Sequence', + 'pdcsapFits', + 'pdcsapPeaks', + 'sapFits', + 'sapPeaks']) + + showSourceFilter = np.full(len(data), False) + + if(self.cbKepler.isChecked()): + showKepler = data["Source"] == "Kepler" + showSourceFilter |= showKepler + if(self.cbK2.isChecked()): + showK2 = data["Source"] == "K2" + showSourceFilter |= showK2 + if(self.cbTESS.isChecked()): + showTESS = data["Source"] == "TESS" + showSourceFilter |= showTESS + + data = data[showSourceFilter].groupby(["StarName", "SpType"], + as_index=False).agg({"sapPeaksCount": "sum", + "pdcsapPeaksCount": "sum", + "sapValidSeconds": "sum", + "pdcsapValidSeconds": "sum"}) + x = np.arange(start=1, stop=len(data)+1, step=1, dtype=int) + + if(self.cbSpTypeL.isChecked()): + Lfilter = data["SpType"].str.startswith("L") + Lfilter &= showSourceFilter + if(self.cbSpTypeM.isChecked()): + Mfilter = data["SpType"].str.startswith("M") + Mfilter &= showSourceFilter + if(self.cbSpTypeK.isChecked()): + Kfilter = data["SpType"].str.startswith("K") + Kfilter &= showSourceFilter + if(self.cbSpTypeG.isChecked()): + Gfilter = data["SpType"].str.startswith("G") + Gfilter &= showSourceFilter + if(self.cbSpTypeF.isChecked()): + Ffilter = data["SpType"].str.startswith("F") + Ffilter &= showSourceFilter + if(self.cbSpTypeUnknown.isChecked()): + Unknownfilter = data["SpType"].str.startswith("-") + Unknownfilter &= showSourceFilter + + self.figureAxis.clear() + if(self.cbSpTypeL.isChecked()): + if(np.any(Lfilter)): + self.figureAxis.scatter(x[Lfilter], data[Lfilter]["sapPeaksCount"]/(data[Lfilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="brown", label="L SAP Count") + self.figureAxis.scatter(x[Lfilter], data[Lfilter]["pdcsapPeaksCount"]/(data[Lfilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="brown", label="L PDCSAP Count") + if(self.cbSpTypeM.isChecked()): + if(np.any(Mfilter)): + self.figureAxis.scatter(x[Mfilter], data[Mfilter]["sapPeaksCount"]/(data[Mfilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="red", label="M SAP Count") + self.figureAxis.scatter(x[Mfilter], data[Mfilter]["pdcsapPeaksCount"]/(data[Mfilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="red", label="M PDCSAP Count") + if(self.cbSpTypeK.isChecked()): + if(np.any(Kfilter)): + self.figureAxis.scatter(x[Kfilter], data[Kfilter]["sapPeaksCount"]/(data[Kfilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="orange", label="K SAP Count") + self.figureAxis.scatter(x[Kfilter], data[Kfilter]["pdcsapPeaksCount"]/(data[Kfilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="orange", label="K PDCSAP Count") + if(self.cbSpTypeG.isChecked()): + if(np.any(Gfilter)): + self.figureAxis.scatter(x[Gfilter], data[Gfilter]["sapPeaksCount"]/(data[Gfilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="yellow", label="G SAP Count") + self.figureAxis.scatter(x[Gfilter], data[Gfilter]["pdcsapPeaksCount"]/(data[Gfilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="yellow", label="G PDCSAP Count") + if(self.cbSpTypeF.isChecked()): + if(np.any(Ffilter)): + self.figureAxis.scatter(x[Ffilter], data[Ffilter]["sapPeaksCount"]/(data[Ffilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="greenyellow", label="F SAP Count") + self.figureAxis.scatter(x[Ffilter], data[Ffilter]["pdcsapPeaksCount"]/(data[Ffilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="greenyellow", label="F PDCSAP Count") + if(self.cbSpTypeUnknown.isChecked()): + if(np.any(Unknownfilter)): + self.figureAxis.scatter(x[Unknownfilter], data[Unknownfilter]["sapPeaksCount"]/(data[Unknownfilter]["sapValidSeconds"]/60/60/24/7), + marker="o", color="gray", label="Unknown SAP Count") + self.figureAxis.scatter(x[Unknownfilter], data[Unknownfilter]["pdcsapPeaksCount"]/(data[Unknownfilter]["pdcsapValidSeconds"]/60/60/24/7), + marker="x", color="gray", label="Unknown PDCSAP Count") + + self.figureAxis.set_ylabel("Flare count per Week") + self.figureAxis.set_xlabel("Star Number") + self.figureAxis.legend() self.figure.canvas.draw_idle() \ No newline at end of file