def generate_table(main, table): def data_received(keywords_freq_files, keywords_stats_files): if keywords_freq_files: table.clear_table() table.settings = copy.deepcopy(main.settings_custom) text_test_significance = settings['generation_settings'][ 'test_significance'] text_measure_effect_size = settings['generation_settings'][ 'measure_effect_size'] (text_test_stat, text_p_value, text_bayes_factor) = main.settings_global['tests_significance'][ 'keywords'][text_test_significance]['cols'] text_effect_size = main.settings_global['measures_effect_size'][ 'keywords'][text_measure_effect_size]['col'] table.blockSignals(True) table.setSortingEnabled(False) table.setUpdatesEnabled(False) # Insert columns (Files) table.insert_col(table.columnCount() - 1, main.tr(f'[{ref_file["name"]}]\nFrequency'), num=True, pct=True, cumulative=True) for file in files: table.insert_col(table.columnCount() - 1, main.tr(f'[{file["name"]}]\nFrequency'), num=True, pct=True, cumulative=True, breakdown=True) if text_test_stat: table.insert_col( table.columnCount() - 1, main.tr(f'[{file["name"]}]\n{text_test_stat}'), num=True, breakdown=True) table.insert_col(table.columnCount() - 1, main.tr(f'[{file["name"]}]\n{text_p_value}'), num=True, breakdown=True) if text_bayes_factor: table.insert_col( table.columnCount() - 1, main.tr(f'[{file["name"]}]\n{text_bayes_factor}'), num=True, breakdown=True) table.insert_col( table.columnCount() - 1, main.tr(f'[{file["name"]}]\n{text_effect_size}'), num=True, breakdown=True) # Insert columns (Total) table.insert_col(table.columnCount() - 1, main.tr(f'Total\nFrequency'), num=True, pct=True, cumulative=True) if text_test_stat: table.insert_col(table.columnCount() - 1, main.tr(f'Total\n{text_test_stat}'), num=True) table.insert_col(table.columnCount() - 1, main.tr(f'Total\n{text_p_value}'), num=True) if text_bayes_factor: table.insert_col(table.columnCount() - 1, main.tr(f'Total\n{text_bayes_factor}'), num=True) table.insert_col(table.columnCount() - 1, main.tr(f'Total\n{text_effect_size}'), num=True) # Sort by p-value of the first file table.sortByColumn( table.find_col( main.tr(f'[{files[0]["name"]}]\n{text_p_value}')), Qt.AscendingOrder) cols_freq = table.find_cols(main.tr('\nFrequency')) if text_test_stat: cols_test_stat = table.find_cols( main.tr(f'\n{text_test_stat}')) cols_p_value = table.find_cols(main.tr('\np-value')) if text_bayes_factor: cols_bayes_factor = table.find_cols(main.tr('\nBayes Factor')) cols_effect_size = table.find_cols(f'\n{text_effect_size}') col_number_files_found = table.find_col( main.tr('Number of\nFiles Found')) len_files = len(files) table.setRowCount(len(keywords_freq_files)) for i, (keyword, stats_files) in enumerate( wordless_sorting.sorted_keywords_stats_files( keywords_stats_files)): keyword_freq_files = keywords_freq_files[keyword] # Rank table.set_item_num_int(i, 0, -1) # Keywords table.setItem(i, 1, wordless_table.Wordless_Table_Item(keyword)) # Frequency for j, freq in enumerate(keyword_freq_files): table.set_item_num_cumulative(i, cols_freq[j], freq) for j, (test_stat, p_value, bayes_factor, effect_size) in enumerate(stats_files): # Test Statistic if text_test_stat: table.set_item_num_float(i, cols_test_stat[j], test_stat) # p-value table.set_item_num_float(i, cols_p_value[j], p_value) # Bayes Factor if text_bayes_factor: table.set_item_num_float(i, cols_bayes_factor[j], bayes_factor) # Effect Size table.set_item_num_float(i, cols_effect_size[j], effect_size) # Number of Files Found table.set_item_num_pct( i, col_number_files_found, len([freq for freq in keyword_freq_files[1:-1] if freq]), len_files) table.blockSignals(False) table.setSortingEnabled(True) table.setUpdatesEnabled(True) table.toggle_pct() table.toggle_cumulative() table.toggle_breakdown() table.update_ranks() table.update_items_width() table.itemChanged.emit(table.item(0, 0)) wordless_msg.wordless_msg_generate_table_success(main) else: wordless_msg_box.wordless_msg_box_no_results(main) wordless_msg.wordless_msg_generate_table_error(main) dialog_progress.accept() settings = main.settings_custom['keywords'] files = main.wordless_files.get_selected_files() if wordless_checking_file.check_files_on_loading(main, files): ref_file = main.wordless_files.find_file_by_name( settings['generation_settings']['ref_file'], selected_only=True) files = [ file for file in main.wordless_files.get_selected_files() if file != ref_file ] if files: dialog_progress = wordless_dialog_misc.Wordless_Dialog_Progress_Process_Data( main) worker_process_data = Wordless_Worker_Process_Data_Keywords_Table( main, dialog_progress, data_received) thread_process_data = wordless_threading.Wordless_Thread_Process_Data( worker_process_data) thread_process_data.start() dialog_progress.exec_() thread_process_data.quit() thread_process_data.wait() else: wordless_msg_box.wordless_msg_box_missing_observed_file(main) wordless_msg.wordless_msg_generate_table_error(main) else: wordless_msg.wordless_msg_generate_table_error(main)
def generate_fig(main): def data_received(keywords_freq_files, keywords_stats_files): if keywords_freq_files: text_test_significance = settings['generation_settings'][ 'test_significance'] text_measure_effect_size = settings['generation_settings'][ 'measure_effect_size'] (text_test_stat, text_p_value, text_bayes_factor) = main.settings_global['tests_significance'][ 'keywords'][text_test_significance]['cols'] text_effect_size = main.settings_global['measures_effect_size'][ 'keywords'][text_measure_effect_size]['col'] if settings['fig_settings']['use_data'] == main.tr('Frequency'): wordless_fig_freq.wordless_fig_freq_ref( main, keywords_freq_files, ref_file=ref_file, settings=settings['fig_settings'], label_x=main.tr('Keywords')) else: if settings['fig_settings']['use_data'] == text_test_stat: keywords_stat_files = { keyword: numpy.array(stats_files)[:, 0] for keyword, stats_files in keywords_stats_files.items() } label_y = text_test_stat elif settings['fig_settings']['use_data'] == text_p_value: keywords_stat_files = { keyword: numpy.array(stats_files)[:, 1] for keyword, stats_files in keywords_stats_files.items() } label_y = text_p_value elif settings['fig_settings']['use_data'] == text_bayes_factor: keywords_stat_files = { keyword: numpy.array(stats_files)[:, 2] for keyword, stats_files in keywords_stats_files.items() } label_y = text_bayes_factor elif settings['fig_settings']['use_data'] == text_effect_size: keywords_stat_files = { keyword: numpy.array(stats_files)[:, 3] for keyword, stats_files in keywords_stats_files.items() } label_y = text_effect_size wordless_fig_stat.wordless_fig_stat_ref( main, keywords_stat_files, ref_file=ref_file, settings=settings['fig_settings'], label_y=label_y) wordless_msg.wordless_msg_generate_fig_success(main) else: wordless_msg_box.wordless_msg_box_no_results(main) wordless_msg.wordless_msg_generate_fig_error(main) dialog_progress.accept() if keywords_freq_files: wordless_fig.show_fig() settings = main.settings_custom['keywords'] files = main.wordless_files.get_selected_files() if wordless_checking_file.check_files_on_loading(main, files): ref_file = main.wordless_files.find_file_by_name( settings['generation_settings']['ref_file'], selected_only=True) files = [ file for file in main.wordless_files.get_selected_files() if file != ref_file ] if files: dialog_progress = wordless_dialog_misc.Wordless_Dialog_Progress_Process_Data( main) worker_process_data = Wordless_Worker_Process_Data_Keywords_Fig( main, dialog_progress, data_received) thread_process_data = wordless_threading.Wordless_Thread_Process_Data( worker_process_data) thread_process_data.start() dialog_progress.exec_() thread_process_data.quit() thread_process_data.wait() else: wordless_msg_box.wordless_msg_box_missing_observed_file(main) wordless_msg.wordless_msg_generate_fig_error(main) else: wordless_msg.wordless_msg_generate_fig_error(main)
def generate_table(main, table): def update_gui(keywords_freq_files, keywords_stats_files): if keywords_freq_files: table.clear_table() table.settings = copy.deepcopy(main.settings_custom) text_test_significance = settings['generation_settings']['test_significance'] text_measure_effect_size = settings['generation_settings']['measure_effect_size'] (text_test_stat, text_p_value, text_bayes_factor) = main.settings_global['tests_significance']['keyword'][text_test_significance]['cols'] text_effect_size = main.settings_global['measures_effect_size']['keyword'][text_measure_effect_size]['col'] # Insert columns (files) table.insert_col(table.columnCount() - 2, main.tr(f'[{ref_file["name"]}]\nFrequency'), is_int = True, is_cumulative = True) table.insert_col(table.columnCount() - 2, main.tr(f'[{ref_file["name"]}]\nFrequency %'), is_pct = True, is_cumulative = True) for file in files: table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\nFrequency'), is_int = True, is_cumulative = True, is_breakdown = True) table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\nFrequency %'), is_pct = True, is_cumulative = True, is_breakdown = True) if text_test_stat: table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\n{text_test_stat}'), is_float = True, is_breakdown = True) table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\n{text_p_value}'), is_float = True, is_breakdown = True) if text_bayes_factor: table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\n{text_bayes_factor}'), is_float = True, is_breakdown = True) table.insert_col(table.columnCount() - 2, main.tr(f'[{file["name"]}]\n{text_effect_size}'), is_float = True, is_breakdown = True) # Insert columns (total) table.insert_col(table.columnCount() - 2, main.tr('Total\nFrequency'), is_int = True, is_cumulative = True) table.insert_col(table.columnCount() - 2, main.tr('Total\nFrequency %'), is_pct = True, is_cumulative = True) if text_test_stat: table.insert_col(table.columnCount() - 2, main.tr(f'Total\n{text_test_stat}'), is_float = True) table.insert_col(table.columnCount() - 2, main.tr(f'Total\n{text_p_value}'), is_float = True) if text_bayes_factor: table.insert_col(table.columnCount() - 2, main.tr(f'Total\n{text_bayes_factor}'), is_float = True) table.insert_col(table.columnCount() - 2, main.tr(f'Total\n{text_effect_size}'), is_float = True) # Sort by p-value of the first file table.horizontalHeader().setSortIndicator( table.find_col(main.tr(f'[{files[0]["name"]}]\n{text_p_value}')), Qt.AscendingOrder ) table.blockSignals(True) table.setSortingEnabled(False) table.setUpdatesEnabled(False) cols_freq = table.find_cols(main.tr('\nFrequency')) cols_freq_pct = table.find_cols(main.tr('\nFrequency %')) for col in cols_freq_pct: cols_freq.remove(col) if text_test_stat: cols_test_stat = table.find_cols(main.tr(f'\n{text_test_stat}')) cols_p_value = table.find_cols(main.tr('\np-value')) if text_bayes_factor: cols_bayes_factor = table.find_cols(main.tr('\nBayes Factor')) cols_effect_size = table.find_cols(f'\n{text_effect_size}') col_files_found = table.find_col(main.tr('Number of\nFiles Found')) col_files_found_pct = table.find_col(main.tr('Number of\nFiles Found %')) freq_totals = numpy.array(list(keywords_freq_files.values())).sum(axis = 0) len_files = len(files) table.setRowCount(len(keywords_freq_files)) for i, (keyword, stats_files) in enumerate(wordless_sorting.sorted_keywords_stats_files(keywords_stats_files)): freq_files = keywords_freq_files[keyword] # Rank table.set_item_num(i, 0, -1) # Keyword table.setItem(i, 1, wordless_table.Wordless_Table_Item(keyword)) # Frequency for j, freq in enumerate(freq_files): table.set_item_num(i, cols_freq[j], freq) table.set_item_num(i, cols_freq_pct[j], freq, freq_totals[j]) for j, (test_stat, p_value, bayes_factor, effect_size) in enumerate(stats_files): # Test Statistic if text_test_stat: table.set_item_num(i, cols_test_stat[j], test_stat) # p-value table.set_item_num(i, cols_p_value[j], p_value) # Bayes Factor if text_bayes_factor: table.set_item_num(i, cols_bayes_factor[j], bayes_factor) # Effect Size table.set_item_num(i, cols_effect_size[j], effect_size) # Number of Files Found num_files_found = len([freq for freq in freq_files[1:-1] if freq]) table.set_item_num(i, col_files_found, num_files_found) table.set_item_num(i, col_files_found_pct, num_files_found, len_files) table.setSortingEnabled(True) table.setUpdatesEnabled(True) table.blockSignals(False) table.toggle_pct() table.toggle_cumulative() table.toggle_breakdown() table.update_ranks() table.itemChanged.emit(table.item(0, 0)) wordless_msg.wordless_msg_generate_table_success(main) else: wordless_msg_box.wordless_msg_box_no_results(main) wordless_msg.wordless_msg_generate_table_error(main) settings = main.settings_custom['keyword'] files = main.wordless_files.get_selected_files() if wordless_checking_file.check_files_on_loading(main, files): ref_file = main.wordless_files.find_file_by_name( settings['generation_settings']['ref_file'], selected_only = True ) files = [file for file in main.wordless_files.get_selected_files() if file != ref_file] if files: dialog_progress = wordless_dialog_misc.Wordless_Dialog_Progress_Process_Data(main) worker_keyword_table = Wordless_Worker_Keyword_Table( main, dialog_progress = dialog_progress, update_gui = update_gui ) thread_keyword_table = wordless_threading.Wordless_Thread(worker_keyword_table) thread_keyword_table.start_worker() else: wordless_msg_box.wordless_msg_box_missing_observed_file(main) wordless_msg.wordless_msg_generate_table_error(main) else: wordless_msg.wordless_msg_generate_table_error(main)