treewide: add minimal lightcurve support
This commit is contained in:
@@ -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")))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user