generate_plots: use multiprocessing
This commit is contained in:
+109
-83
@@ -1,3 +1,4 @@
|
|||||||
|
from math import comb
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import itertools
|
import itertools
|
||||||
@@ -9,6 +10,10 @@ from datetime import datetime
|
|||||||
from errno import EEXIST
|
from errno import EEXIST
|
||||||
from os import makedirs, path
|
from os import makedirs, path
|
||||||
import shutil
|
import shutil
|
||||||
|
import multiprocessing
|
||||||
|
import concurrent.futures
|
||||||
|
from concurrent.futures import wait, ALL_COMPLETED
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
def normalizePhase(phase, phaseMin = None, phaseMax = None):
|
def normalizePhase(phase, phaseMin = None, phaseMax = None):
|
||||||
if(phaseMin is None):
|
if(phaseMin is None):
|
||||||
@@ -27,41 +32,6 @@ def mkdir_p(mypath):
|
|||||||
pass
|
pass
|
||||||
else: raise
|
else: raise
|
||||||
|
|
||||||
fileName = "datav5.1.cff"
|
|
||||||
data = pd.read_pickle(fileName)
|
|
||||||
|
|
||||||
binList = [10, 20, 30]
|
|
||||||
spType = ["M", "K", "G", "F"]
|
|
||||||
|
|
||||||
useKepler = True
|
|
||||||
useK2 = True
|
|
||||||
useTESS = True
|
|
||||||
|
|
||||||
showSourceFilter = np.full(len(data), False)
|
|
||||||
if(useKepler):
|
|
||||||
showKepler = data["Source"] == "Kepler"
|
|
||||||
showSourceFilter |= showKepler
|
|
||||||
if(useK2):
|
|
||||||
showK2 = data["Source"] == "K2"
|
|
||||||
showSourceFilter |= showK2
|
|
||||||
if(useTESS):
|
|
||||||
showTESS = data["Source"] == "TESS"
|
|
||||||
showSourceFilter |= showTESS
|
|
||||||
|
|
||||||
current = datetime.now()
|
|
||||||
date = f"{current.year}-{current.month}-{current.day}"
|
|
||||||
time = f"{current.hour}-{current.minute}-{current.second}"
|
|
||||||
folderPath = f"../{date}-poly-only/"
|
|
||||||
#folderPath = f"G:/Meine Ablage/Masterthesis/{date}/"
|
|
||||||
mkdir_p(folderPath)
|
|
||||||
|
|
||||||
# remove any data that has no period
|
|
||||||
#data = data[(data["FitType"] == "sine") | (data["FitType"] == "poly")]
|
|
||||||
data = data[((data["FitType"] == "poly")) & (data["isValidFold"])]
|
|
||||||
|
|
||||||
validStarPeriodMap = []
|
|
||||||
starList = set(list(data["StarName"]))
|
|
||||||
|
|
||||||
def allValuesWithin3Std(values: list):
|
def allValuesWithin3Std(values: list):
|
||||||
if(not values or len(values) == 1):
|
if(not values or len(values) == 1):
|
||||||
return True
|
return True
|
||||||
@@ -71,19 +41,6 @@ def allValuesWithin3Std(values: list):
|
|||||||
def getMeanPeriod(values: list):
|
def getMeanPeriod(values: list):
|
||||||
return np.mean(values)
|
return np.mean(values)
|
||||||
|
|
||||||
for starName in starList:
|
|
||||||
periods = list(data[data["StarName"] == starName]["pdcsapPeriod"])
|
|
||||||
|
|
||||||
validStarPeriodMap.append({"StarName": starName,
|
|
||||||
"MeanPeriod": getMeanPeriod(periods),
|
|
||||||
"PeriodWithinStd": allValuesWithin3Std(periods)})
|
|
||||||
|
|
||||||
validStarPeriodMap = pd.DataFrame(validStarPeriodMap)
|
|
||||||
periodsCutList = [0.5, 1, 1.5, 2, 5, 10, 15, 20]
|
|
||||||
|
|
||||||
data = pd.merge(data, validStarPeriodMap, on="StarName")
|
|
||||||
starDB: StarDB = StarDB.getInstance("stars.db")
|
|
||||||
|
|
||||||
def plotBinsHistogram(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, bins, title, filename, foldedFits):
|
def plotBinsHistogram(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, bins, title, filename, foldedFits):
|
||||||
figHisto, ((axHisto)) = plt.subplots(nrows=1, ncols=1)
|
figHisto, ((axHisto)) = plt.subplots(nrows=1, ncols=1)
|
||||||
y, binEdges, _ = axHisto.hist(PDCSAPdataList, bins,
|
y, binEdges, _ = axHisto.hist(PDCSAPdataList, bins,
|
||||||
@@ -182,9 +139,8 @@ def plotFlarePeaks(plotdata, filters, labels, colors, maxY, title, filename):
|
|||||||
plt.savefig(filename)
|
plt.savefig(filename)
|
||||||
plt.close()
|
plt.close()
|
||||||
|
|
||||||
def setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
def setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak, pdcsapbinningData,
|
||||||
PDCSAPdataList=None, dataFilter=None,
|
pdcsapbinningDataColumn, PDCSAPdataList=None, dataFilter=None):
|
||||||
PeriodModulation=False):
|
|
||||||
xData = pd.DataFrame()
|
xData = pd.DataFrame()
|
||||||
yData = pd.DataFrame()
|
yData = pd.DataFrame()
|
||||||
for aX, aY in zip(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak):
|
for aX, aY in zip(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak):
|
||||||
@@ -195,15 +151,9 @@ def setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
|||||||
yData = np.asarray(yData.values)[:,0]
|
yData = np.asarray(yData.values)[:,0]
|
||||||
if(PDCSAPdataList is not None):
|
if(PDCSAPdataList is not None):
|
||||||
if(dataFilter is not None):
|
if(dataFilter is not None):
|
||||||
if(PeriodModulation):
|
PDCSAPdataList.append(pdcsapbinningData[dataFilter][pdcsapbinningDataColumn])
|
||||||
PDCSAPdataList.append(pdcsapbinningDataSpotModDiffPeriod[dataFilter]["PDCSAPNormPhasePeriod"])
|
|
||||||
else:
|
else:
|
||||||
PDCSAPdataList.append(pdcsapbinningData[dataFilter]["PDCSAPNormPhase"])
|
PDCSAPdataList.append(pdcsapbinningData[:][pdcsapbinningDataColumn])
|
||||||
else:
|
|
||||||
if(PeriodModulation):
|
|
||||||
PDCSAPdataList.append(pdcsapbinningDataSpotModDiffPeriod[:]["PDCSAPNormPhasePeriod"])
|
|
||||||
else:
|
|
||||||
PDCSAPdataList.append(pdcsapbinningData[:]["PDCSAPNormPhase"])
|
|
||||||
|
|
||||||
return xData, yData, PDCSAPdataList
|
return xData, yData, PDCSAPdataList
|
||||||
|
|
||||||
@@ -226,8 +176,7 @@ def generatePlots(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, histogramTit
|
|||||||
flarePlotFilename = flarePlotFilenameArg.replace("@maxY", str(maxY))
|
flarePlotFilename = flarePlotFilenameArg.replace("@maxY", str(maxY))
|
||||||
plotFlarePeaks(plotdata, filters, flarePlotLabels, flarePlotColors, maxY, flarePlotTitle, flarePlotFilename)
|
plotFlarePeaks(plotdata, filters, flarePlotLabels, flarePlotColors, maxY, flarePlotTitle, flarePlotFilename)
|
||||||
|
|
||||||
# All stars
|
def plotStar(data, showSourceFilter, folderPath, starName):
|
||||||
for starName in starDB.getAllStars():
|
|
||||||
finalData = pd.DataFrame()
|
finalData = pd.DataFrame()
|
||||||
starNameR = starName.replace('*', '_star_')
|
starNameR = starName.replace('*', '_star_')
|
||||||
nameFilter = data["StarName"] == starName
|
nameFilter = data["StarName"] == starName
|
||||||
@@ -292,11 +241,11 @@ for starName in starDB.getAllStars():
|
|||||||
PDCSAPdataList2dhistPhase.append(pdcsapbinningData[:]["PDCSAPNormPhase"])
|
PDCSAPdataList2dhistPhase.append(pdcsapbinningData[:]["PDCSAPNormPhase"])
|
||||||
PDCSAPdataList2dhistPeak.append(pdcsapbinningData[:]["Peak"])
|
PDCSAPdataList2dhistPeak.append(pdcsapbinningData[:]["Peak"])
|
||||||
|
|
||||||
xData, yData, PDCSAPdataList = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak, PDCSAPdataList)
|
xData, yData, PDCSAPdataList = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
||||||
|
pdcsapbinningData, "PDCSAPNormPhase",
|
||||||
|
PDCSAPdataList)
|
||||||
|
|
||||||
PDCSAPlabelList.append(f"{starName}")
|
|
||||||
PDCSAPcolorList.append(color)
|
PDCSAPcolorList.append(color)
|
||||||
|
|
||||||
generatePlots(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, f"Flare count in phase of {starName} with @bins bins", f"{locFolder}/{starNameR}-Flarecount-@bins_Bins.png",
|
generatePlots(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, f"Flare count in phase of {starName} with @bins bins", f"{locFolder}/{starNameR}-Flarecount-@bins_Bins.png",
|
||||||
xData, yData, f"Flare peak per phase histogram of {starName} with @bins bins", f"{locFolder}/{starNameR}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
xData, yData, f"Flare peak per phase histogram of {starName} with @bins bins", f"{locFolder}/{starNameR}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
||||||
pdcsapbinningData, None, f"{starName}", color, f"Flare peaks per phase of {starName}", f"{locFolder}/{starNameR}-Flarepeaks_maxY-@maxY.png",
|
pdcsapbinningData, None, f"{starName}", color, f"Flare peaks per phase of {starName}", f"{locFolder}/{starNameR}-Flarepeaks_maxY-@maxY.png",
|
||||||
@@ -323,7 +272,9 @@ for starName in starDB.getAllStars():
|
|||||||
PDCSAPdataList2dhistPhase.append(pdcsapbinningDataSpotModDiffPeriod[:]["PDCSAPNormPhasePeriod"])
|
PDCSAPdataList2dhistPhase.append(pdcsapbinningDataSpotModDiffPeriod[:]["PDCSAPNormPhasePeriod"])
|
||||||
PDCSAPdataList2dhistPeak.append(pdcsapbinningDataSpotModDiffPeriod[:]["PeakPeriod"])
|
PDCSAPdataList2dhistPeak.append(pdcsapbinningDataSpotModDiffPeriod[:]["PeakPeriod"])
|
||||||
|
|
||||||
xData, yData, PDCSAPdataListPeriod = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak, PDCSAPdataListPeriod, PeriodModulation=True)
|
xData, yData, PDCSAPdataListPeriod = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
||||||
|
pdcsapbinningDataSpotModDiffPeriod, "PDCSAPNormPhasePeriod",
|
||||||
|
PDCSAPdataListPeriod)
|
||||||
|
|
||||||
PDCSAPlabelList.append(f"{starName}")
|
PDCSAPlabelList.append(f"{starName}")
|
||||||
PDCSAPcolorList.append(color)
|
PDCSAPcolorList.append(color)
|
||||||
@@ -333,9 +284,7 @@ for starName in starDB.getAllStars():
|
|||||||
pdcsapbinningDataSpotModDiffPeriod, None, f"{starName}", color, f"Flare peaks per phase of {starName}", f"{locFolder}/{starNameR}-Flarepeaks_maxY-@maxY_Period.png",
|
pdcsapbinningDataSpotModDiffPeriod, None, f"{starName}", color, f"Flare peaks per phase of {starName}", f"{locFolder}/{starNameR}-Flarepeaks_maxY-@maxY_Period.png",
|
||||||
foldedPeriodFits)
|
foldedPeriodFits)
|
||||||
|
|
||||||
|
def plotCombo(data, showSourceFilter, folderPath, combo):
|
||||||
for comboLength in range(1, len(spType) + 1):
|
|
||||||
for combo in itertools.combinations(spType, comboLength):
|
|
||||||
for maxFlarePeak in [1.01, 1.05, 1.1, 1.25, 1.5]:
|
for maxFlarePeak in [1.01, 1.05, 1.1, 1.25, 1.5]:
|
||||||
# max Flare Peak cut
|
# max Flare Peak cut
|
||||||
finalDataMaxFlarePeak = pd.DataFrame()
|
finalDataMaxFlarePeak = pd.DataFrame()
|
||||||
@@ -438,10 +387,11 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
PDCSAPcolorListU.append("greenyellow")
|
PDCSAPcolorListU.append("greenyellow")
|
||||||
plotFiltersU.append(Ffilter)
|
plotFiltersU.append(Ffilter)
|
||||||
|
|
||||||
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseU, PDCSAPdataList2dhistPeakU)
|
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseU, PDCSAPdataList2dhistPeakU,
|
||||||
generatePlots(PDCSAPdataListU, PDCSAPlabelListU, PDCSAPcolorListU, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarecount-@bins_Bins.png",
|
pdcsapbinningDataU, "PDCSAPNormPhase")
|
||||||
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
generatePlots(PDCSAPdataListU, PDCSAPlabelListU, PDCSAPcolorListU, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolderU}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarecount-@bins_Bins.png",
|
||||||
pdcsapbinningDataU, plotFiltersU, PDCSAPlabelListU, PDCSAPcolorListU, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolder}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarepeaks_maxY-@maxY.png")
|
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolderU}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
||||||
|
pdcsapbinningDataU, plotFiltersU, PDCSAPlabelListU, PDCSAPcolorListU, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolderU}/{''.join(combo)}_maxFlarePeak_{maxFlarePeak}-Flarepeaks_maxY-@maxY.png")
|
||||||
|
|
||||||
|
|
||||||
if(len(pdcsapbinningDataO) > 0):
|
if(len(pdcsapbinningDataO) > 0):
|
||||||
@@ -485,10 +435,11 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
PDCSAPcolorListO.append("greenyellow")
|
PDCSAPcolorListO.append("greenyellow")
|
||||||
plotFiltersO.append(Ffilter)
|
plotFiltersO.append(Ffilter)
|
||||||
|
|
||||||
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseO, PDCSAPdataList2dhistPeakO)
|
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseO, PDCSAPdataList2dhistPeakO,
|
||||||
generatePlots(PDCSAPdataListO, PDCSAPlabelListO, PDCSAPcolorListO, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarecount-@bins_Bins.png",
|
pdcsapbinningDataO, "PDCSAPNormPhase")
|
||||||
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
generatePlots(PDCSAPdataListO, PDCSAPlabelListO, PDCSAPcolorListO, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolderO}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarecount-@bins_Bins.png",
|
||||||
pdcsapbinningDataO, plotFiltersO, PDCSAPlabelListO, PDCSAPcolorListO, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolder}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarepeaks_maxY-@maxY.png")
|
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolderO}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
||||||
|
pdcsapbinningDataO, plotFiltersO, PDCSAPlabelListO, PDCSAPcolorListO, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolderO}/{''.join(combo)}_minFlarePeak_{maxFlarePeak}-Flarepeaks_maxY-@maxY.png")
|
||||||
# all flare peaks
|
# all flare peaks
|
||||||
finalDataAllFlarePeaks = pd.DataFrame()
|
finalDataAllFlarePeaks = pd.DataFrame()
|
||||||
if("M" in combo):
|
if("M" in combo):
|
||||||
@@ -575,14 +526,15 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
PDCSAPcolorList.append("greenyellow")
|
PDCSAPcolorList.append("greenyellow")
|
||||||
plotFilters.append(Ffilter)
|
plotFilters.append(Ffilter)
|
||||||
|
|
||||||
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak)
|
xData, yData, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
||||||
|
pdcsapbinningData, "PDCSAPNormPhase",)
|
||||||
plotdata = pdcsapbinningData
|
plotdata = pdcsapbinningData
|
||||||
filters = plotFilters
|
filters = plotFilters
|
||||||
generatePlots(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarecount-@bins_Bins.png",
|
generatePlots(PDCSAPdataList, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarecount-@bins_Bins.png",
|
||||||
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
xData, yData, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarepeaks-@bins_Bins_maxY-@maxY.png",
|
||||||
plotdata, filters, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarepeaks_maxY-@maxY.png")
|
plotdata, filters, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars ({numStars} stars)", f"{locFolder}/{''.join(combo)}-Flarepeaks_maxY-@maxY.png")
|
||||||
|
|
||||||
if(comboLength == 1):
|
if(len(combo) == 1):
|
||||||
mainSpType = combo[0]
|
mainSpType = combo[0]
|
||||||
spTypes = [f"{mainSpType}0", f"{mainSpType}1", f"{mainSpType}2", f"{mainSpType}3", f"{mainSpType}4", f"{mainSpType}5", f"{mainSpType}6", f"{mainSpType}7", f"{mainSpType}8", f"{mainSpType}9"]
|
spTypes = [f"{mainSpType}0", f"{mainSpType}1", f"{mainSpType}2", f"{mainSpType}3", f"{mainSpType}4", f"{mainSpType}5", f"{mainSpType}6", f"{mainSpType}7", f"{mainSpType}8", f"{mainSpType}9"]
|
||||||
match mainSpType:
|
match mainSpType:
|
||||||
@@ -642,7 +594,9 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
PDCSAPdataList2dhistPeak.append(pdcsapbinningData[SpTypefilter]["Peak"])
|
PDCSAPdataList2dhistPeak.append(pdcsapbinningData[SpTypefilter]["Peak"])
|
||||||
PDCSAPlabelList.append(f"{spTyp} Stars")
|
PDCSAPlabelList.append(f"{spTyp} Stars")
|
||||||
PDCSAPcolorList.append(color)
|
PDCSAPcolorList.append(color)
|
||||||
xData, yData, PDCSAPdataList = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak, PDCSAPdataList, SpTypefilter)
|
xData, yData, PDCSAPdataList = setupxyDataAndDataList(PDCSAPdataList2dhistPhase, PDCSAPdataList2dhistPeak,
|
||||||
|
pdcsapbinningData, "PDCSAPNormPhase",
|
||||||
|
PDCSAPdataList, SpTypefilter)
|
||||||
|
|
||||||
plotdata = pdcsapbinningData
|
plotdata = pdcsapbinningData
|
||||||
filters = SpTypefilter
|
filters = SpTypefilter
|
||||||
@@ -692,13 +646,13 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
for td, peak, pv in zip(pdcsapVals["Phase"], pdcsapVals["Peak"], row["pdcsapPeaks"]):
|
for td, peak, pv in zip(pdcsapVals["Phase"], pdcsapVals["Peak"], row["pdcsapPeaks"]):
|
||||||
normPhase = normalizePhase(td.value, np.abs(PDCSAPminOrigPhase), np.abs(PDCSAPmaxOrigPhase))
|
normPhase = normalizePhase(td.value, np.abs(PDCSAPminOrigPhase), np.abs(PDCSAPmaxOrigPhase))
|
||||||
if(row["MeanPeriod"] <= periodCut):
|
if(row["MeanPeriod"] <= periodCut):
|
||||||
csvFileU.write(f"{row['StarName']},{row['SpType']},{row['Source']},{row['FilePath']},{pv['FlarePeakTime']},{pv['FlarePeak']},{row['pdcsapPeriod']},{row["MeanPeriod"]},{normPhase},{peak['FlarePeak']}")
|
csvFileU.write(f"{row['StarName']},{row['SpType']},{row['Source']},{row['FilePath']},{pv['FlarePeakTime']},{pv['FlarePeak']},{row['pdcsapPeriod']},{row['MeanPeriod']},{normPhase},{peak['FlarePeak']}")
|
||||||
csvFileU.write("\n")
|
csvFileU.write("\n")
|
||||||
pdcsapbinningDataU.append({"SpType": f'{row["SpType"][0]}',
|
pdcsapbinningDataU.append({"SpType": f'{row["SpType"][0]}',
|
||||||
"PDCSAPNormPhase": normPhase,
|
"PDCSAPNormPhase": normPhase,
|
||||||
"Peak": peak["FlarePeak"]})
|
"Peak": peak["FlarePeak"]})
|
||||||
else:
|
else:
|
||||||
csvFileO.write(f"{row['StarName']},{row['SpType']},{row['Source']},{row['FilePath']},{pv['FlarePeakTime']},{pv['FlarePeak']},{row['pdcsapPeriod']},{row["MeanPeriod"]},{normPhase},{peak['FlarePeak']}")
|
csvFileO.write(f"{row['StarName']},{row['SpType']},{row['Source']},{row['FilePath']},{pv['FlarePeakTime']},{pv['FlarePeak']},{row['pdcsapPeriod']},{row['MeanPeriod']},{normPhase},{peak['FlarePeak']}")
|
||||||
csvFileO.write("\n")
|
csvFileO.write("\n")
|
||||||
pdcsapbinningDataO.append({"SpType": f'{row["SpType"][0]}',
|
pdcsapbinningDataO.append({"SpType": f'{row["SpType"][0]}',
|
||||||
"PDCSAPNormPhase": normPhase,
|
"PDCSAPNormPhase": normPhase,
|
||||||
@@ -782,16 +736,88 @@ for comboLength in range(1, len(spType) + 1):
|
|||||||
plotFiltersO.append(FfilterO)
|
plotFiltersO.append(FfilterO)
|
||||||
|
|
||||||
if(len(PDCSAPdataList2dhistPhaseU) > 0 and len(PDCSAPdataList2dhistPeakU) > 0):
|
if(len(PDCSAPdataList2dhistPhaseU) > 0 and len(PDCSAPdataList2dhistPeakU) > 0):
|
||||||
xDataU, yDataU, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseU, PDCSAPdataList2dhistPeakU)
|
xDataU, yDataU, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseU, PDCSAPdataList2dhistPeakU,
|
||||||
|
pdcsapbinningDataU, "PDCSAPNormPhase",)
|
||||||
if(len(PDCSAPdataListU) > 0 and len(xDataU) > 0 and len(yDataU) > 0):
|
if(len(PDCSAPdataListU) > 0 and len(xDataU) > 0 and len(yDataU) > 0):
|
||||||
generatePlots(PDCSAPdataListU, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarecount-Period_u_{periodCut}-@bins_Bins.png",
|
generatePlots(PDCSAPdataListU, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarecount-Period_u_{periodCut}-@bins_Bins.png",
|
||||||
xDataU, yDataU, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_u_{periodCut}-@bins_Bins_maxY-@maxY.png",
|
xDataU, yDataU, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_u_{periodCut}-@bins_Bins_maxY-@maxY.png",
|
||||||
pdcsapbinningDataU, plotFiltersU, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_u_{periodCut}-maxY_@maxY.png")
|
pdcsapbinningDataU, plotFiltersU, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars (Rot. Period under {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_u_{periodCut}-maxY_@maxY.png")
|
||||||
|
|
||||||
if(len(PDCSAPdataList2dhistPhaseO) > 0 and len(PDCSAPdataList2dhistPeakO) > 0):
|
if(len(PDCSAPdataList2dhistPhaseO) > 0 and len(PDCSAPdataList2dhistPeakO) > 0):
|
||||||
xDataO, yDataO, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseO, PDCSAPdataList2dhistPeakO)
|
xDataO, yDataO, _ = setupxyDataAndDataList(PDCSAPdataList2dhistPhaseO, PDCSAPdataList2dhistPeakO,
|
||||||
|
pdcsapbinningDataO, "PDCSAPNormPhase",)
|
||||||
if(len(PDCSAPdataListO) > 0 and len(xDataO) > 0 and len(yDataO) > 0):
|
if(len(PDCSAPdataListO) > 0 and len(xDataO) > 0 and len(yDataO) > 0):
|
||||||
generatePlots(PDCSAPdataListO, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarecount-Period_o_{periodCut}-@bins_Bins.png",
|
generatePlots(PDCSAPdataListO, PDCSAPlabelList, PDCSAPcolorList, f"Flare count per phase of {', '.join(combo)} type stars with @bins bins (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarecount-Period_o_{periodCut}-@bins_Bins.png",
|
||||||
xDataO, yDataO, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_o_{periodCut}-@bins_Bins_maxY-@maxY.png",
|
xDataO, yDataO, f"Flare peak per phase histogram of {', '.join(combo)} type stars with @bins bins (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_o_{periodCut}-@bins_Bins_maxY-@maxY.png",
|
||||||
pdcsapbinningDataO, plotFiltersO, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_o_{periodCut}-maxY_@maxY.png")
|
pdcsapbinningDataO, plotFiltersO, PDCSAPlabelList, PDCSAPcolorList, f"Flare peaks per phase of {', '.join(combo)} type stars (Rot. Period over {periodCut} days)", f"{locFolder}/{''.join(combo)}-Flarepeaks-Period_o_{periodCut}-maxY_@maxY.png")
|
||||||
|
|
||||||
|
|
||||||
|
binList = [10, 20, 30]
|
||||||
|
spType = ["M", "K", "G", "F"]
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
fileName = "datav5.1.cff"
|
||||||
|
fullData = pd.read_pickle(fileName)
|
||||||
|
starDB: StarDB = StarDB.getInstance("stars.db")
|
||||||
|
|
||||||
|
useKepler = True
|
||||||
|
useK2 = True
|
||||||
|
useTESS = True
|
||||||
|
|
||||||
|
current = datetime.now()
|
||||||
|
date = f"{current.year}-{current.month}-{current.day}"
|
||||||
|
time = f"{current.hour}-{current.minute}-{current.second}"
|
||||||
|
|
||||||
|
cpuCount = multiprocessing.cpu_count()
|
||||||
|
executor = concurrent.futures.ProcessPoolExecutor(cpuCount)
|
||||||
|
#executor = concurrent.futures.ThreadPoolExecutor(cpuCount)
|
||||||
|
|
||||||
|
foldedFitTypes = ["sine", "poly"]
|
||||||
|
for foldedFitTypesLength in range(1, len(foldedFitTypes)+1):
|
||||||
|
for foldedFitTypeCombo in itertools.combinations(foldedFitTypes, foldedFitTypesLength):
|
||||||
|
folderPath = f"../{date}-{'-'.join(foldedFitTypeCombo)}/"
|
||||||
|
mkdir_p(folderPath)
|
||||||
|
foldedFitTypeComboFilter = np.full(len(fullData), False)
|
||||||
|
if("sine" in foldedFitTypeCombo):
|
||||||
|
foldedFitTypeComboFilter |= fullData["FitType"] == "sine"
|
||||||
|
if("poly" in foldedFitTypeCombo):
|
||||||
|
foldedFitTypeComboFilter |= fullData["FitType"] == "poly"
|
||||||
|
|
||||||
|
data = fullData[(foldedFitTypeComboFilter) & (fullData["isValidFold"])]
|
||||||
|
|
||||||
|
showSourceFilter = np.full(len(data), False)
|
||||||
|
if(useKepler):
|
||||||
|
showKepler = data["Source"] == "Kepler"
|
||||||
|
showSourceFilter |= showKepler
|
||||||
|
if(useK2):
|
||||||
|
showK2 = data["Source"] == "K2"
|
||||||
|
showSourceFilter |= showK2
|
||||||
|
if(useTESS):
|
||||||
|
showTESS = data["Source"] == "TESS"
|
||||||
|
showSourceFilter |= showTESS
|
||||||
|
|
||||||
|
validStarPeriodMap = []
|
||||||
|
starList = set(list(data["StarName"]))
|
||||||
|
|
||||||
|
for starName in starList:
|
||||||
|
periods = list(data[data["StarName"] == starName]["pdcsapPeriod"])
|
||||||
|
|
||||||
|
validStarPeriodMap.append({"StarName": starName,
|
||||||
|
"MeanPeriod": getMeanPeriod(periods),
|
||||||
|
"PeriodWithinStd": allValuesWithin3Std(periods)})
|
||||||
|
|
||||||
|
validStarPeriodMap = pd.DataFrame(validStarPeriodMap)
|
||||||
|
periodsCutList = [0.5, 1, 1.5, 2, 5, 10, 15, 20]
|
||||||
|
|
||||||
|
data = pd.merge(data, validStarPeriodMap, on="StarName")
|
||||||
|
|
||||||
|
starPlotFunc = partial(plotStar, data, showSourceFilter, folderPath)
|
||||||
|
list(executor.map(starPlotFunc, starDB.getAllStars())) # wrap in list, to force evaluation
|
||||||
|
|
||||||
|
combos = []
|
||||||
|
for comboLength in range(1, len(spType) + 1):
|
||||||
|
for combo in itertools.combinations(spType, comboLength):
|
||||||
|
combos.append(combo)
|
||||||
|
|
||||||
|
plotComboFunc = partial(plotCombo, data, showSourceFilter, folderPath)
|
||||||
|
list(executor.map(plotComboFunc, combos))
|
||||||
|
|||||||
Reference in New Issue
Block a user