astrodatagui: CalcAllFlaresThread: initial thread class

This commit is contained in:
2024-05-14 22:29:19 +02:00
parent 4139b71b04
commit 2c11166640
+53
View File
@@ -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)