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