Пример #1
0
    def _data_dialog(self):
        '''
        a dialog for data processing
        '''
        
        self.progress_processing.setHidden(True)
        self.progress_processing.setMinimum(0)
        self.progress_processing.setValue(0)

        self.tasks = transport.get_result_files(self.work_dir, self.substances)
        n_tas = len(self.tasks)

        self.solutions = transport.parse_task_dirs(self.work_dir, FNAME_ELEMS)
        n_sols = len(self.solutions)

        if n_tas - n_sols == 0:
            self.button_process_newonly.setHidden(True)
            self.button_process_all.setText('Start')
        else:
            self.button_process_newonly.setVisible(True)
            self.button_process_all.setText('All')

        msg = "Found {} tasks to analyze. It may take a while\n".format(n_tas)
        msg += "{} tasks was already processed (compressed file found), {} still need processing\n".format(
            n_sols, n_tas - n_sols)
        if self.substances and n_sols > 0:
            msg += "\n\nYour task works with multiple substances. Now you close this primary task and open result for single substance in subfolder."
        self.label_processing_text.setText(msg)

        self.progress_processing.setMaximum(n_tas * 4)
Пример #2
0
    def _analyze_data_selected(self):
        '''
        action for button_process_newonly
        takes only unprocessed tasks in work_dir to process
        '''
        if not self.tasks:
            self.tasks = transport.get_result_files(
                self.work_dir, self.substances)
        if not self.solutions:
            self.solutions = transport.parse_task_dirs(
                self.work_dir, FNAME_ELEMS)

        dir1 = [path.split(sol)[0] for sol in self.solutions]
        dir2 = [path.split(sol)[0] for sol in self.tasks]
        unproc_list = [transport.get_result_files(i, self.substances)[0]
                       for i in dir2 if i not in dir1]

        self.messenger('Processing data, it may take a while')
        self._analyze_data_routine(unproc_list)
        self.messenger('Processing successfully finished', 300)
        self._data_dialog()
Пример #3
0
    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)
Пример #4
0
    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')