def read_concentrations(self, fname=None): '''read concentration from TransportOut result file''' if fname == None: fname = self.master_work_dir + \ SEPAR + self.file_dict['Transport_out'] msg = '' try: self.result_elements = transport.load_vysledek( str(self.master_work_dir) + SEPAR + FNAME_ELEMS) except IOError: msg += 'Failed to load result data for elements.' self.result_elements = None try: self.result_times = transport.load_vysledek( str(self.master_work_dir) + SEPAR + FNAME_TIME) except IOError: msg += 'Failed to load result data for times.' self.result_times = None if msg: if self.substances: self.messenger("Your task works with multiple substances. Please open result for single substance in subfolder.") else: self.messenger('{}. Please process data first'.format(msg)) self.tabWidget.setCurrentWidget(self.data_processing) self.tabWidget.setCurrentIndex(2) # 2 should be data processing return False else: return True
def __compare_selected_conc(self, elm_list=None): ''' wrapper for selected method parses all dirs and sums concentrations for all/selected elements output a table with sum ''' sname, filename = self.__get_proper_filename_suma() master = path.join(self.work_dir, 'master', filename) mas_conc_suma = transport.load_vysledek(master) mas_total = concentrations.sum_conc(mas_conc_suma, elm_list) list_of_conc = [] task_numbers = [] conc = transport.parse_task_dirs(self.work_dir, FNAME_SUMA, sname) for fname in conc: conc_suma = transport.load_vysledek(fname) task_nr = path.split(fname)[0] task_name = task_nr.split('\\')[-1] if task_name == 'master': task_name = '9999999' task_numbers.append(task_name) list_of_conc.append(concentrations.sum_conc(conc_suma, elm_list)) grade_vector = concentrations.grade_result(mas_total, list_of_conc) table_rows = zip(task_numbers, list_of_conc, grade_vector) table_rows = sorted( table_rows, key=lambda grade: grade[2], reverse=True) self.__display_table_rslt(table_rows) # enable export self.comparation_table = table_rows self.button_export_csv.setEnabled(True) self.spin_grade_filter.setEnabled(True) self.button_grade_filter.setEnabled(True)
def merge_result_files(self): ''' Method for merging result files parses all task dirs, opens result json files and merge values to one big table discards results in master dir ''' sname, filename = self.__get_proper_filename_suma() conc = transport.parse_task_dirs(self.work_dir, FNAME_ELEMS, sname) merged_table = {} minval = self.edit_merge_minval.text() try: minval = float(minval) except ValueError: minval = 0.0 for fname in conc: elem_conc = transport.load_vysledek(fname) if not 'master' in fname: for elid, time_dict in elem_conc.items(): if merged_table.has_key(elid): merged_table[elid].append(time_dict) else: merged_table[elid] = [time_dict, ] else: master_conc = elem_conc output_file = self.work_dir + SEPAR + FNAME_MERGE self.messenger( 'Merging the results to one file / it may take a while...') merger.table_to_file( merged_table, master_conc, output_file, len(conc) - 1, minval) self.messenger( 'Data has been successfully merged and exported to CSV file')