treewide: add minimal lightcurve support

This commit is contained in:
2024-06-06 14:22:00 +02:00
parent 00b44a78df
commit 3a1b86d933
4 changed files with 1440 additions and 17 deletions
+6 -6
View File
@@ -1,18 +1,18 @@
from PyQt5.QtCore import pyqtSignal, QThread
import multiprocessing
import concurrent.futures
import lightkurve as lk
from ..util.MinimalLightCurve import read
import pandas as pd
from ..flaredetector.flaredetector import calculateFlareFitsForLightcurve
def getFlareCount(filesDict):
lc = lk.read(filesDict["FilePath"])
lc = read(filesDict["FilePath"])
lc.flux = lc["sap_flux"]
lc.flux_err = lc["sap_flux_err"]
sapPeaks, sapFits = calculateFlareFitsForLightcurve(lc.flatten())
sapPeaks, sapFits = calculateFlareFitsForLightcurve(lc.flatten(), minimalLC=True)
lc.flux = lc["pdcsap_flux"]
lc.flux_err = lc["pdcsap_flux_err"]
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten())
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten(), minimalLC=True)
filesDict["sapPeaks"] = sapPeaks
filesDict["sapPeaksCount"] = len(sapPeaks)
@@ -21,7 +21,8 @@ def getFlareCount(filesDict):
filesDict["pdcsapPeaksCount"] = len(pdcsapPeaks)
filesDict["pdcsapFits"] = pdcsapFits
del lc
if(filesDict["StarName"] == "CD-51 13128" and filesDict["Sequence"] == 1):
print(filesDict)
return filesDict
class CalcAllFlaresThread(QThread):
@@ -35,7 +36,6 @@ class CalcAllFlaresThread(QThread):
#@pyqtSlot()
def run(self):
cpuCount = multiprocessing.cpu_count()
splitList = [self.allFlaresDictList[i:i + cpuCount] for i in range(0, len(self.allFlaresDictList), cpuCount)]
executor = concurrent.futures.ProcessPoolExecutor(cpuCount)
resFrame = pd.DataFrame(executor.map(getFlareCount, self.allFlaresDictList.to_dict(orient="records")))
+3 -3
View File
@@ -40,8 +40,9 @@ def calculateFitForFlare(lightcurve, peakIndex):
flareFitDataPoints = flareFitDataPoints + peakIndex
return np.array(Peak+1), flareFitDataPoints, np.array(fit+1)
def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05):
maxIndices = findMaxIndices(lightcurve, num, distance=distance, height=height, sortByHighest=True)
def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05, minimalLC=False):
maxIndices = findMaxIndices(lightcurve, num, distance=distance, height=height,
sortByHighest=True, minimalLC=minimalLC)
peaks = []
fits = []
for index in maxIndices:
@@ -57,7 +58,6 @@ def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05
"Quality": lightcurve.quality[flareFitDataPoints]})
except Exception as error:
pass
#print("Flare fit exception: ", error)
return peaks, fits
+11 -8
View File
@@ -1,16 +1,19 @@
import numpy as np
from scipy.signal import find_peaks
from lightkurve.periodogram import Periodogram
from lightkurve.lightcurve import LightCurve
def findMaxIndices(lc, num=3, distance=100, height=(None, None), sortByHighest=False):
if(isinstance(lc, Periodogram)):
data = lc.power
elif(isinstance(lc, LightCurve)):
def findMaxIndices(lc, num=3, distance=100, height=(None, None), sortByHighest=False,
minimalLC=False):
if(minimalLC):
data = lc.flux
else:
return np.zeros(num)-1
from lightkurve.periodogram import Periodogram as OrigPG
from lightkurve.lightcurve import LightCurve as OrigLC
if(isinstance(lc, OrigPG)):
data = lc.power
elif(isinstance(lc, OrigLC)):
data = lc.flux
else:
return np.zeros(num)-1
peak_indices, peak_dict = find_peaks(data, height=height,
distance=distance)
peak_heights = peak_dict["peak_heights"]
File diff suppressed because it is too large Load Diff