tree wide: way too many changes, im sorry
This commit is contained in:
@@ -62,6 +62,7 @@ class AstrodataGUI(QtWidgets.QMainWindow):
|
||||
self.btOpenSavedFlareCountFile.clicked.connect(self.btOpenSavedFlareCountFileClicked)
|
||||
|
||||
self.flaredetectorPreview.periodsCalculated.connect(self.updatePeriods)
|
||||
self.flaredetectorPreview.epochCalculated.connect(self.updateEpochPeriod)
|
||||
|
||||
self.setupCustomSimbadQueries()
|
||||
self.show()
|
||||
@@ -205,6 +206,9 @@ class AstrodataGUI(QtWidgets.QMainWindow):
|
||||
def updatePeriods(self, periods: list):
|
||||
self.edPlotFoldPeriod.setText(str(periods[0].value))
|
||||
|
||||
def updateEpochPeriod(self, epoch: float):
|
||||
self.edPlotFoldEpochTime.setText(str(epoch))
|
||||
|
||||
def btCombineSeqClicked(self):
|
||||
#self.gbPlotOptionsNormalize.setEnabled(False)
|
||||
mainName = self.listDownloaded.currentItem().text()
|
||||
|
||||
@@ -4,32 +4,54 @@ import concurrent.futures
|
||||
from ..util.MinimalLightCurve import read
|
||||
import pandas as pd
|
||||
from ..flaredetector.flaredetector import calculateFlareFitsForLightcurve
|
||||
from ..flaredetector.util import getTotalValidDataInSeconds
|
||||
from ..flaredetector.util import *
|
||||
|
||||
def getFlareCount(filesDict):
|
||||
lc = read(filesDict["FilePath"])
|
||||
lc.flux = lc["sap_flux"]
|
||||
lc.flux_err = lc["sap_flux_err"]
|
||||
sapPeaks, sapFits = calculateFlareFitsForLightcurve(lc.flatten(), minimalLC=True)
|
||||
sapPeaks, sapFits = calculateFlareFitsForLightcurve(lc.flatten())
|
||||
sapValSec, sapTds = getTotalValidDataInSeconds(lc, "sap_flux")
|
||||
sapPeriodogram = lc.to_periodogram()
|
||||
sapPeakPeriod = sapPeriodogram.period[findMaxIndices(sapPeriodogram, num=4, distance=100, sortByHighest=True)[0]]
|
||||
sapEpochTime = getEpochTime(lc)
|
||||
sapFoldedLC = lc.fold(period=sapPeakPeriod, epoch_time=sapEpochTime)
|
||||
sapPhase, sapSineFit, sapFitType = getFoldedBestFit(sapFoldedLC)
|
||||
sapMinima, sapMaxima = getFoldedFitPeakValley(sapSineFit)
|
||||
sapminPhasesBoundsIndices, sapmaxPhasesBoundsIndices = getPhaseRangesNearPeak((sapMinima, sapMaxima), sapPhase)
|
||||
lc.flux = lc["pdcsap_flux"]
|
||||
lc.flux_err = lc["pdcsap_flux_err"]
|
||||
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten(), minimalLC=True)
|
||||
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten())
|
||||
pdcsapValSec, pdcsapTds = getTotalValidDataInSeconds(lc, "pdcsap_flux")
|
||||
pdcsapPeriodogram = lc.to_periodogram()
|
||||
pdcsapPeakPeriod = pdcsapPeriodogram.period[findMaxIndices(pdcsapPeriodogram, num=4, distance=100, sortByHighest=True)[0]]
|
||||
pdcsapEpochTime = getEpochTime(lc)
|
||||
pdcsapFoldedLC = lc.fold(period=pdcsapPeakPeriod, epoch_time=pdcsapEpochTime)
|
||||
pdcsapPhase, pdcsapSineFit, pdcsapFitType = getFoldedBestFit(pdcsapFoldedLC)
|
||||
pdcsapMinima, pdcsapMaxima = getFoldedFitPeakValley(pdcsapSineFit)
|
||||
pdcsapminPhasesBoundsIndices, pdcsapmaxPhasesBoundsIndices = getPhaseRangesNearPeak((pdcsapMinima, pdcsapMaxima), pdcsapPhase)
|
||||
|
||||
filesDict["sapPeaks"] = sapPeaks
|
||||
filesDict["sapPeaksCount"] = len(sapPeaks)
|
||||
filesDict["sapFits"] = sapFits
|
||||
filesDict["sapValidTimespans"] = sapTds
|
||||
filesDict["sapValidSeconds"] = sapValSec
|
||||
filesDict["sapPeriod"] = sapPeakPeriod.value
|
||||
filesDict["sapPeriodMinima"] = sapMinima
|
||||
filesDict["sapPeriodMinimaBoundaries"] = sapminPhasesBoundsIndices
|
||||
filesDict["sapPeriodMaxima"] = sapMaxima
|
||||
filesDict["sapPeriodMaximaBoundaries"] = sapmaxPhasesBoundsIndices
|
||||
filesDict["pdcsapPeaks"] = pdcsapPeaks
|
||||
filesDict["pdcsapPeaksCount"] = len(pdcsapPeaks)
|
||||
filesDict["pdcsapFits"] = pdcsapFits
|
||||
filesDict["pdcsapValidTimespans"] = pdcsapTds
|
||||
filesDict["pdcsapValidSeconds"] = pdcsapValSec
|
||||
filesDict["pdcsapPeriod"] = pdcsapPeakPeriod.value
|
||||
filesDict["pdcsapPeriodMinima"] = pdcsapMinima
|
||||
filesDict["pdcsapPeriodMinimaBoundaries"] = pdcsapminPhasesBoundsIndices
|
||||
filesDict["pdcsapPeriodMaxima"] = pdcsapMaxima
|
||||
filesDict["pdcsapPeriodMaximaBoundaries"] = pdcsapmaxPhasesBoundsIndices
|
||||
del lc
|
||||
if(filesDict["StarName"] == "CD-51 13128" and filesDict["Sequence"] == 1):
|
||||
print(filesDict)
|
||||
return filesDict
|
||||
|
||||
class CalcAllFlaresThread(QThread):
|
||||
|
||||
@@ -43,6 +43,8 @@ class FlareSummaryPlotGUI(QWidget):
|
||||
self.btShowFlaresPerStar.clicked.connect(self.btShowFlaresPerStarClicked)
|
||||
self.btShowFlaresPerStarNormalized = QPushButton("Show Flares/Star Normalized")
|
||||
self.btShowFlaresPerStarNormalized.clicked.connect(self.btShowFlaresPerStarNormalizedClicked)
|
||||
self.btShowPeriods = QPushButton("Show Mean Periods")
|
||||
self.btShowPeriods.clicked.connect(self.btShowPeriodsClicked)
|
||||
|
||||
self.cbKepler = QCheckBox("Kepler")
|
||||
self.cbKepler.setChecked(True)
|
||||
@@ -68,6 +70,7 @@ class FlareSummaryPlotGUI(QWidget):
|
||||
self.buttonGridLayout.addWidget(self.btShowFlaresPerFile, 0, 1)
|
||||
self.buttonGridLayout.addWidget(self.btShowFlaresPerStar, 0, 2)
|
||||
self.buttonGridLayout.addWidget(self.btShowFlaresPerStarNormalized, 0, 3)
|
||||
self.buttonGridLayout.addWidget(self.btShowPeriods, 0, 4)
|
||||
|
||||
self.buttonGridLayout.addWidget(QLabel("Sources: "), 1, 0)
|
||||
self.buttonGridLayout.addWidget(self.cbKepler, 1, 1)
|
||||
@@ -169,7 +172,18 @@ class FlareSummaryPlotGUI(QWidget):
|
||||
'pdcsapFits',
|
||||
'pdcsapPeaks',
|
||||
'sapFits',
|
||||
'sapPeaks'])
|
||||
'sapPeaks',
|
||||
'sapPeriod',
|
||||
'sapPeriodMinima',
|
||||
'sapPeriodMinimaBoundaries',
|
||||
'sapPeriodMaxima',
|
||||
'sapPeriodMaximaBoundaries',
|
||||
'pdcsapValidTimespans',
|
||||
'pdcsapPeriod',
|
||||
'pdcsapPeriodMinima',
|
||||
'pdcsapPeriodMinimaBoundaries',
|
||||
'pdcsapPeriodMaxima',
|
||||
'pdcsapPeriodMaximaBoundaries'])
|
||||
|
||||
showSourceFilter = np.full(len(data), False)
|
||||
|
||||
@@ -248,7 +262,19 @@ class FlareSummaryPlotGUI(QWidget):
|
||||
'pdcsapFits',
|
||||
'pdcsapPeaks',
|
||||
'sapFits',
|
||||
'sapPeaks'])
|
||||
'sapValidTimespans',
|
||||
'sapPeaks',
|
||||
'sapPeriod',
|
||||
'sapPeriodMinima',
|
||||
'sapPeriodMinimaBoundaries',
|
||||
'sapPeriodMaxima',
|
||||
'sapPeriodMaximaBoundaries',
|
||||
'pdcsapValidTimespans',
|
||||
'pdcsapPeriod',
|
||||
'pdcsapPeriodMinima',
|
||||
'pdcsapPeriodMinimaBoundaries',
|
||||
'pdcsapPeriodMaxima',
|
||||
'pdcsapPeriodMaximaBoundaries'])
|
||||
|
||||
showSourceFilter = np.full(len(data), False)
|
||||
|
||||
@@ -329,4 +355,121 @@ class FlareSummaryPlotGUI(QWidget):
|
||||
self.figureAxis.set_ylabel("Flare count per Week")
|
||||
self.figureAxis.set_xlabel("Star Number")
|
||||
self.figureAxis.legend()
|
||||
self.figure.canvas.draw_idle()
|
||||
self.figure.canvas.draw_idle()
|
||||
|
||||
def btShowPeriodsClicked(self):
|
||||
data = self.starFLareDictList.drop(columns=['Distance',
|
||||
'DistanceUnit',
|
||||
'FilePath',
|
||||
'RotVel',
|
||||
'RotVelUnit',
|
||||
'Sequence',
|
||||
'pdcsapFits',
|
||||
'pdcsapPeaks',
|
||||
'sapFits',
|
||||
'sapValidTimespans',
|
||||
'sapPeaks',
|
||||
'sapPeriodMinima',
|
||||
'sapPeriodMinimaBoundaries',
|
||||
'sapPeriodMaxima',
|
||||
'sapPeriodMaximaBoundaries',
|
||||
'pdcsapValidTimespans',
|
||||
'pdcsapPeriodMinima',
|
||||
'pdcsapPeriodMinimaBoundaries',
|
||||
'pdcsapPeriodMaxima',
|
||||
'pdcsapPeriodMaximaBoundaries',
|
||||
'sapPeaksCount',
|
||||
'pdcsapPeaksCount',
|
||||
'sapValidSeconds',
|
||||
'pdcsapValidSeconds'])
|
||||
|
||||
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
|
||||
|
||||
print(data["sapPeriod"])
|
||||
|
||||
data = data[showSourceFilter].groupby(["StarName", "SpType"],
|
||||
as_index=False).agg({"sapPeriod": "mean",
|
||||
"pdcsapPeriod": "mean"})
|
||||
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]["sapPeriod"],
|
||||
marker="o", color="brown", label="L SAP Period")
|
||||
self.figureAxis.scatter(x[Lfilter], data[Lfilter]["pdcsapPeriod"],
|
||||
marker="x", color="brown", label="L PDCSAP Period")
|
||||
if(self.cbSpTypeM.isChecked()):
|
||||
if(np.any(Mfilter)):
|
||||
self.figureAxis.scatter(x[Mfilter], data[Mfilter]["sapPeriod"],
|
||||
marker="o", color="red", label="M SAP Period")
|
||||
self.figureAxis.scatter(x[Mfilter], data[Mfilter]["pdcsapPeriod"],
|
||||
marker="x", color="red", label="M PDCSAP Period")
|
||||
if(self.cbSpTypeK.isChecked()):
|
||||
if(np.any(Kfilter)):
|
||||
self.figureAxis.scatter(x[Kfilter], data[Kfilter]["sapPeriod"],
|
||||
marker="o", color="orange", label="K SAP Period")
|
||||
self.figureAxis.scatter(x[Kfilter], data[Kfilter]["pdcsapPeriod"],
|
||||
marker="x", color="orange", label="K PDCSAP Period")
|
||||
if(self.cbSpTypeG.isChecked()):
|
||||
if(np.any(Gfilter)):
|
||||
self.figureAxis.scatter(x[Gfilter], data[Gfilter]["sapPeriod"],
|
||||
marker="o", color="yellow", label="G SAP Period")
|
||||
self.figureAxis.scatter(x[Gfilter], data[Gfilter]["pdcsapPeriod"],
|
||||
marker="x", color="yellow", label="G PDCSAP Period")
|
||||
if(self.cbSpTypeF.isChecked()):
|
||||
if(np.any(Ffilter)):
|
||||
self.figureAxis.scatter(x[Ffilter], data[Ffilter]["sapPeriod"],
|
||||
marker="o", color="greenyellow", label="F SAP Period")
|
||||
self.figureAxis.scatter(x[Ffilter], data[Ffilter]["pdcsapPeriod"],
|
||||
marker="x", color="greenyellow", label="F PDCSAP Period")
|
||||
if(self.cbSpTypeUnknown.isChecked()):
|
||||
if(np.any(Unknownfilter)):
|
||||
self.figureAxis.scatter(x[Unknownfilter], data[Unknownfilter]["sapPeriod"],
|
||||
marker="o", color="gray", label="Unknown SAP Period")
|
||||
self.figureAxis.scatter(x[Unknownfilter], data[Unknownfilter]["pdcsapPeriod"],
|
||||
marker="x", color="gray", label="Unknown PDCSAP Period")
|
||||
|
||||
self.figureAxis.set_ylabel("Period / days")
|
||||
self.figureAxis.set_xlabel("Star Number")
|
||||
self.figureAxis.legend()
|
||||
self.figure.canvas.draw_idle()
|
||||
pass
|
||||
|
||||
def btShowNumMinimaMaximaClicked(self):
|
||||
pass
|
||||
|
||||
def btShowFlaresInMinimaMaximaClicked(self):
|
||||
pass
|
||||
|
||||
def btShowFlaresInMinimaMaximaPerMinimaMaximaClicked(self):
|
||||
pass
|
||||
|
||||
@@ -254,7 +254,7 @@ class FlaredetectorWidget(QtWidgets.QWidget):
|
||||
cycle, foldedIndex = convertStarndardIndexToFoldedIndex(lc, peak["StandardIndex"])
|
||||
self.figureAxis.plot(lc.phase[lc.cycle == cycle][foldedIndex].value,
|
||||
lc.flux[lc.cycle == cycle][foldedIndex], "x", color="red")
|
||||
phase, sineFit = getFoldedBestFit(lc)
|
||||
phase, sineFit, _ = getFoldedBestFit(lc)
|
||||
self.figureAxis.plot(phase, sineFit, color="red")
|
||||
minPhasesBoundsIndices, maxPhasesBoundsIndices = getPhaseRangesNearPeak(getFoldedFitPeakValley(sineFit), phase)
|
||||
plotPhaseRangesNearPeak((minPhasesBoundsIndices, maxPhasesBoundsIndices), phase, ax=self.figureAxis)
|
||||
|
||||
Reference in New Issue
Block a user