From 297b62311a4b704b5c9b8e3185f524419ba7f8dd Mon Sep 17 00:00:00 2001 From: chrin Date: Tue, 24 Sep 2024 11:54:03 +0200 Subject: [PATCH] progressbar argument must be an int --- src/analysis.py | 87 +++++++++++++++++++++++++------------------------ tina.py | 4 +++ 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/src/analysis.py b/src/analysis.py index 4288224..0bab623 100644 --- a/src/analysis.py +++ b/src/analysis.py @@ -7,6 +7,7 @@ import inspect import logging import math import os +import pandas as pd from statistics import mean import time import timeit @@ -48,6 +49,7 @@ class AnalysisProcedure(QObject): self.cyca = self.parent.cyca self.check_status = self.parent.check_status self.check_status_list = self.parent.check_status_list + self.trigger_progressbar = self.parent.trigger_progressbar self.daq_timeout = 10 self.logging = self.parent.logging self.logger = self.logging.getLogger(__name__) @@ -93,24 +95,29 @@ class AnalysisProcedure(QObject): self.mod_freq = 500 #GHz self.duty_cycle = 1 # percentage - #Turn off DEBUG for MATLAB mat_logger = logging.getLogger('matplotlib') mat_logger.setLevel(logging.ERROR) - + + #self.trigger_progressbar.emit(70) + + @Slot() def receive_abort(self): """ Set abort variable to interrupt measurement """ self.abort = True - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_ABORTING) + self.trigger_progressbar.emit(int(PROGRESS_THREAD_ABORTING)) def aborting(self, line_no): self.abort = False #mess = "Measurement aborted" - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_ABORTED) - + self.trigger_progressbar.emit(int(PROGRESS_THREAD_ABORTED)) + + self.parent.trigger_log_message.emit( + MsgSeverity.WARN.name, _pymodule, line_no, + ("Measurement procedure aborted in analysis thread"), {} ) #########INITIALIZE THE INPUTS FOM THE GUI####################### @@ -138,11 +145,10 @@ class AnalysisProcedure(QObject): MsgSeverity.INFO.name, _pymodule, utils.line_no(), mess, {}) else: self.rf_sample = float(self.input_data['freqsampling']) - + try: - self.accelerator = self.input_data['accelerator'] - + self.accelerator = self.input_data['accelerator'] self.harmonic_no = float( self.input_data[self.accelerator]['harmonic']) self.dTcable = float( @@ -192,13 +198,13 @@ class AnalysisProcedure(QObject): #Step 1 - Collect ambient data relate to the machine self.all_data['Ambient data'] = self.collect_ambient_data() - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_START) + self.trigger_progressbar.emit(int(PROGRESS_THREAD_START)) #Step 2 - Perform measurement and return data for processing self.all_data['Raw data'] = self.measure() if self.all_data['Raw data'] is None: - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_ERROR) + self.trigger_progressbar.emit(int(PROGRESS_THREAD_ERROR)) return None #Step 3 - Process the raw data @@ -207,7 +213,7 @@ class AnalysisProcedure(QObject): #Step 4 - Provide plots self.all_data['Figure data'] = self.make_figs() - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_END) + self.trigger_progressbar.emit(int(PROGRESS_THREAD_END)) return self.all_data def load_hdf_file(self, hdf_filename_loaded): @@ -246,7 +252,7 @@ class AnalysisProcedure(QObject): self.all_data['Processed data'] = self.process(from_hdf5=True) self.all_data['Figure data'] = self.make_figs() - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_END) + self.trigger_progressbar.emit(PROGRESS_THREAD_END) return(self.all_data) @@ -283,13 +289,13 @@ class AnalysisProcedure(QObject): self.parent.trigger_log_message.emit( MsgSeverity.ERROR.name, _pymodule, utils.line_no(), ("Cannot attach CA context in thread " + - "Scan will not be initiated!"), _options) + "Measurement will not be initiated!"), _options) if self.abort: self.aborting(utils.line_no()) return {} - self.parent.trigger_progressbar.emit(PROGRESS_THREAD_ERROR) + self.trigger_progressbar.emit(PROGRESS_THREAD_ERROR) return {} @@ -319,20 +325,6 @@ class AnalysisProcedure(QObject): self.check_status_list(_pymodule, "getScalarList", pv_list, status_list, utils.line_no()) - - ''' - if status != self.cyca.ICAFE_NORMAL: - _options = {} - for pv, stat in zip(pv_list, status_list): - if stat != self.cyca.ICAFE_NORMAL: - _mess = ("Error in 'get' for pv " + pv + ".") - _options['statusCode'] = ( - str(stat) + " " + self.cafe.getStatusCodeAsString(stat)) - _options['statusInfo'] = self.cafe.getStatusInfo(stat) - self.parent.trigger_log_message.emit( - MsgSeverity.ERROR.name, _pymodule, utils.line_no(), - _mess, _options) - ''' #Put values in dictionary for inspection for i, (dict_key) in enumerate(self.pv_value_dict.keys()): @@ -415,7 +407,12 @@ class AnalysisProcedure(QObject): start = time.time() finished = False - while (time.time() - start) < self.daq_timeout: + icount = 0 + while (time.time() - start) < self.daq_timeout: + if self.abort: + self.aborting(utils.line_no()) + return None + value = self.cafe.getCache(pv_daq_state) if value is None: stat = self.cafe.getStatus(pv_daq_state) @@ -423,12 +420,12 @@ class AnalysisProcedure(QObject): utils.line_no()) elif value == "DONE": finished = True - break - if self.abort: - self.aborting(utils.line_no()) - return None - + break time.sleep(1.0) + icount += 1 + progress = int(100*icount/self.daq_timeout) + print("progress", progress, flush=True) + self.trigger_progressbar.emit(progress) if not finished: mess = ("DAQ not completed. Exceeded allowed " + @@ -447,13 +444,18 @@ class AnalysisProcedure(QObject): return None - + series = pd.Series(self.y1_sample) + self.y1_sample = (series * (-1)).tolist() + self.t_sample = [None] * len(self.y1_sample) + self.t_sample[0] = 0 + for i in range(1, len(self.y1_sample)): + self.t_sample[i] += self.t_stepsize else: - self.parent.trigger_progressbar.emit(20) + self.trigger_progressbar.emit(20) print("open File", flush=True) file = open('/hipa/bd/data/measurements/tina/20240710-223007_2000.txt','r') - self.parent.trigger_progressbar.emit(40) + self.trigger_progressbar.emit(40) if self.abort: file.close() self.aborting(utils.line_no()) @@ -464,17 +466,16 @@ class AnalysisProcedure(QObject): self.aborting(utils.line_no()) return None print("close File", flush=True) - self.parent.trigger_progressbar.emit(60) + self.trigger_progressbar.emit(60) extract_raw_data() - - + self.extract_peak_data() if self.abort: self.aborting(utils.line_no()) return None - #extract_peak_data() - self.parent.trigger_progressbar.emit(70) + + self.trigger_progressbar.emit(70) #Fill Raw data here rawdata = { @@ -501,7 +502,7 @@ class AnalysisProcedure(QObject): self.aborting(utils.line_no()) return None - self.parent.trigger_progressbar.emit(80) + self.trigger_progressbar.emit(95) if from_hdf5: self.unpack_hdf_data() diff --git a/tina.py b/tina.py index 9283740..c907964 100644 --- a/tina.py +++ b/tina.py @@ -33,6 +33,8 @@ _appname = "Tina" class StartMain(BaseWindow): trigger_log_message = Signal(str, str, int, str, dict) + trigger_progressbar = Signal(int) + trigger_progressbar_str = Signal(int, str) ring_cyclotron = 'Cyclotron' injector_2 = 'Injector' @@ -53,6 +55,8 @@ class StartMain(BaseWindow): #self.from_hdf = False in base class self.message = "" self.gui = AppGui(self) + + def prepare_results_message(self): """Prepare results message