astrodatagui: CalcAllFlaresThread: initial thread class
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from PyQt5.QtCore import pyqtSignal, QThread
|
||||
import multiprocessing
|
||||
import concurrent.futures
|
||||
import lightkurve as lk
|
||||
from ..flaredetector.flaredetector import calculateFlareFitsForLightcurve
|
||||
|
||||
import time
|
||||
|
||||
def getFlareCount(filesDict):
|
||||
lc = lk.read(filesDict["FilePath"])
|
||||
lc.flux = lc["sap_flux"]
|
||||
lc_flattenend = lc.flatten()
|
||||
sapPeaks, sapFits = calculateFlareFitsForLightcurve(lc_flattenend)
|
||||
lc.flux = lc["pdcsap_flux"]
|
||||
lc_flattenend = lc.flatten()
|
||||
pdcsapPeaks, pdcsapFits = calculateFlareFitsForLightcurve(lc_flattenend)
|
||||
|
||||
retDict = filesDict
|
||||
retDict["sapPeaks"] = sapPeaks
|
||||
retDict["sapPeaksCount"] = len(sapPeaks)
|
||||
retDict["sapFits"] = sapFits
|
||||
retDict["pdcsapPeaks"] = pdcsapPeaks
|
||||
retDict["pdcsapPeaksCount"] = len(pdcsapPeaks)
|
||||
retDict["pdcsapFits"] = pdcsapFits
|
||||
|
||||
return retDict
|
||||
|
||||
class CalcAllFlaresThread(QThread):
|
||||
progress = pyqtSignal(int)
|
||||
finished = pyqtSignal(list)
|
||||
|
||||
def __init__(self, allFlaresDictList):
|
||||
super().__init__()
|
||||
self.allFlaresDictList = allFlaresDictList
|
||||
|
||||
#@pyqtSlot()
|
||||
def run(self):
|
||||
cpuCount = multiprocessing.cpu_count()
|
||||
print(len(self.allFlaresDictList))
|
||||
start = time.time()
|
||||
executor = concurrent.futures.ProcessPoolExecutor(cpuCount)
|
||||
futures = [executor.submit(getFlareCount, starDict) for starDict in self.allFlaresDictList]
|
||||
concurrent.futures.wait(futures)
|
||||
end = time.time()
|
||||
print("Multiprocess time needed: ", end-start)
|
||||
ret = []
|
||||
#for dic in executor.map(getFlareCount, self.allFlaresDictList):
|
||||
# print(dic)
|
||||
# ret.append(dic)
|
||||
for future in futures:
|
||||
ret.append(future.result())
|
||||
|
||||
self.finished.emit(ret)
|
||||
Reference in New Issue
Block a user