treewide: add minimal lightcurve support
This commit is contained in:
@@ -1,18 +1,18 @@
|
|||||||
from PyQt5.QtCore import pyqtSignal, QThread
|
from PyQt5.QtCore import pyqtSignal, QThread
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import concurrent.futures
|
import concurrent.futures
|
||||||
import lightkurve as lk
|
from ..util.MinimalLightCurve import read
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from ..flaredetector.flaredetector import calculateFlareFitsForLightcurve
|
from ..flaredetector.flaredetector import calculateFlareFitsForLightcurve
|
||||||
|
|
||||||
def getFlareCount(filesDict):
|
def getFlareCount(filesDict):
|
||||||
lc = lk.read(filesDict["FilePath"])
|
lc = read(filesDict["FilePath"])
|
||||||
lc.flux = lc["sap_flux"]
|
lc.flux = lc["sap_flux"]
|
||||||
lc.flux_err = lc["sap_flux_err"]
|
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 = lc["pdcsap_flux"]
|
||||||
lc.flux_err = lc["pdcsap_flux_err"]
|
lc.flux_err = lc["pdcsap_flux_err"]
|
||||||
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten())
|
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc.flatten(), minimalLC=True)
|
||||||
|
|
||||||
filesDict["sapPeaks"] = sapPeaks
|
filesDict["sapPeaks"] = sapPeaks
|
||||||
filesDict["sapPeaksCount"] = len(sapPeaks)
|
filesDict["sapPeaksCount"] = len(sapPeaks)
|
||||||
@@ -21,7 +21,8 @@ def getFlareCount(filesDict):
|
|||||||
filesDict["pdcsapPeaksCount"] = len(pdcsapPeaks)
|
filesDict["pdcsapPeaksCount"] = len(pdcsapPeaks)
|
||||||
filesDict["pdcsapFits"] = pdcsapFits
|
filesDict["pdcsapFits"] = pdcsapFits
|
||||||
del lc
|
del lc
|
||||||
|
if(filesDict["StarName"] == "CD-51 13128" and filesDict["Sequence"] == 1):
|
||||||
|
print(filesDict)
|
||||||
return filesDict
|
return filesDict
|
||||||
|
|
||||||
class CalcAllFlaresThread(QThread):
|
class CalcAllFlaresThread(QThread):
|
||||||
@@ -35,7 +36,6 @@ class CalcAllFlaresThread(QThread):
|
|||||||
#@pyqtSlot()
|
#@pyqtSlot()
|
||||||
def run(self):
|
def run(self):
|
||||||
cpuCount = multiprocessing.cpu_count()
|
cpuCount = multiprocessing.cpu_count()
|
||||||
splitList = [self.allFlaresDictList[i:i + cpuCount] for i in range(0, len(self.allFlaresDictList), cpuCount)]
|
|
||||||
executor = concurrent.futures.ProcessPoolExecutor(cpuCount)
|
executor = concurrent.futures.ProcessPoolExecutor(cpuCount)
|
||||||
|
|
||||||
resFrame = pd.DataFrame(executor.map(getFlareCount, self.allFlaresDictList.to_dict(orient="records")))
|
resFrame = pd.DataFrame(executor.map(getFlareCount, self.allFlaresDictList.to_dict(orient="records")))
|
||||||
|
|||||||
@@ -40,8 +40,9 @@ def calculateFitForFlare(lightcurve, peakIndex):
|
|||||||
flareFitDataPoints = flareFitDataPoints + peakIndex
|
flareFitDataPoints = flareFitDataPoints + peakIndex
|
||||||
return np.array(Peak+1), flareFitDataPoints, np.array(fit+1)
|
return np.array(Peak+1), flareFitDataPoints, np.array(fit+1)
|
||||||
|
|
||||||
def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05):
|
def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05, minimalLC=False):
|
||||||
maxIndices = findMaxIndices(lightcurve, num, distance=distance, height=height, sortByHighest=True)
|
maxIndices = findMaxIndices(lightcurve, num, distance=distance, height=height,
|
||||||
|
sortByHighest=True, minimalLC=minimalLC)
|
||||||
peaks = []
|
peaks = []
|
||||||
fits = []
|
fits = []
|
||||||
for index in maxIndices:
|
for index in maxIndices:
|
||||||
@@ -57,7 +58,6 @@ def calculateFlareFitsForLightcurve(lightcurve, num=100, distance=1, height=0.05
|
|||||||
"Quality": lightcurve.quality[flareFitDataPoints]})
|
"Quality": lightcurve.quality[flareFitDataPoints]})
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
pass
|
pass
|
||||||
#print("Flare fit exception: ", error)
|
|
||||||
|
|
||||||
return peaks, fits
|
return peaks, fits
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from scipy.signal import find_peaks
|
from scipy.signal import find_peaks
|
||||||
|
|
||||||
from lightkurve.periodogram import Periodogram
|
def findMaxIndices(lc, num=3, distance=100, height=(None, None), sortByHighest=False,
|
||||||
from lightkurve.lightcurve import LightCurve
|
minimalLC=False):
|
||||||
|
if(minimalLC):
|
||||||
def findMaxIndices(lc, num=3, distance=100, height=(None, None), sortByHighest=False):
|
data = lc.flux
|
||||||
if(isinstance(lc, Periodogram)):
|
else:
|
||||||
|
from lightkurve.periodogram import Periodogram as OrigPG
|
||||||
|
from lightkurve.lightcurve import LightCurve as OrigLC
|
||||||
|
if(isinstance(lc, OrigPG)):
|
||||||
data = lc.power
|
data = lc.power
|
||||||
elif(isinstance(lc, LightCurve)):
|
elif(isinstance(lc, OrigLC)):
|
||||||
data = lc.flux
|
data = lc.flux
|
||||||
else:
|
else:
|
||||||
return np.zeros(num)-1
|
return np.zeros(num)-1
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user