From 16f43c21267f0875ff7cfc6c26a4800f5c693dea Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Wed, 10 May 2023 09:59:44 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore(data=5Fprocessing.py):=20u?= =?UTF-8?q?pdate=20keys=20in=20the=20dict=20returned=20by=20get=5Fadvanced?= =?UTF-8?q?=5Fdata=20function=20to=20be=20more=20descriptive=20=E2=9C=A8?= =?UTF-8?q?=20feat(MainWindow.py):=20add=20functionality=20to=20export=20a?= =?UTF-8?q?dvanced=20data=20to=20a=20text=20file=20=F0=9F=9A=80=20feat(Mai?= =?UTF-8?q?nWindow.py):=20add=20button=20to=20export=20advanced=20data=20t?= =?UTF-8?q?o=20a=20text=20file=20=F0=9F=9A=80=20feat(MainWindow.ui):=20upd?= =?UTF-8?q?ate=20labels=20for=20Volume=20and=20Surface=20to=20include=20un?= =?UTF-8?q?its=20The=20keys=20in=20the=20dict=20returned=20by=20the=20get?= =?UTF-8?q?=5Fadvanced=5Fdata=20function=20were=20updated=20to=20be=20more?= =?UTF-8?q?=20descriptive.=20The=20export=5Fadvanced=5Fdata=20function=20w?= =?UTF-8?q?as=20added=20to=20the=20MainWindow=20class=20to=20allow=20the?= =?UTF-8?q?=20user=20to=20export=20the=20advanced=20data=20to=20a=20text?= =?UTF-8?q?=20file.=20A=20button=20was=20added=20to=20the=20GUI=20to=20all?= =?UTF-8?q?ow=20the=20user=20to=20export=20the=20advanced=20data.=20The=20?= =?UTF-8?q?labels=20for=20Volume=20and=20Surface=20were=20updated=20to=20i?= =?UTF-8?q?nclude=20the=20units=20of=20measurement.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🎨 style(UI_MainWindow.py): rename tab_5 to parameters and tab_6 to values for better semantics The names of the tabs have been changed to better reflect their contents. The tab previously named tab_5 is now named parameters, and the tab previously named tab_6 is now named values. This improves the readability and maintainability of the code. 🎨 style(UI_MainWindow.py): rename tab_6 to values and tab to graph_pane_1, tab_2 to graph_pane_2, tab_3 to graph_pane_3, and tab_4 to graph_pane_4 for better semantics This commit only renames the tabs in the UI_MainWindow.py file to improve the semantics of the code. The tab_6 is renamed to values, and tab, tab_2, tab_3, and tab_4 are renamed to graph_pane_1, graph_pane_2, graph_pane_3, and graph_pane_4, respectively. 🔨 refactor(UI_MainWindow.py): update labels for volume and surface to include units The labels for volume and surface have been updated to include the units of measurement in millimeters. The tab names for the settings and graph panes have also been updated to improve readability and consistency with the naming conventions. 🔨 refactor(AdvancedDataWorker.py): update keys in the dict returned by the function to be more explicit 🔨 refactor(position_manipulation.py): remove unnecessary computation of the center of gravity in the verticalise function The keys in the dict returned by the AdvancedDataWorker function have been updated to be more explicit. The keys 'Volume' and 'Surface' have been updated to 'Volume en mm3' and 'Surface en mm2' respectively to indicate the units of measurement. In the position_manipulation.py file, the computation of the center of gravity in the verticalise function was unnecessary and has been removed to improve performance. --- utils/data_processing/data_processing.py | 8 +- utils/gui/pyqt/main_window/MainWindow.py | 25 ++- utils/gui/pyqt/main_window/MainWindow.ui | 16 +- utils/gui/pyqt/main_window/UI_MainWindow.py | 184 +++++++++--------- .../main_window/Workers/AdvancedDataWorker.py | 4 +- utils/math/position_manipulation.py | 1 - 6 files changed, 128 insertions(+), 110 deletions(-) diff --git a/utils/data_processing/data_processing.py b/utils/data_processing/data_processing.py index bb8a8a7..7a6f5ad 100644 --- a/utils/data_processing/data_processing.py +++ b/utils/data_processing/data_processing.py @@ -120,8 +120,8 @@ def get_advanced_data(discrete_data:dict, update_progress_bar= progressbar_place :param update_progress_bar: Function to update the progress bar :return: dict with the following keys: - Tortuosite - - Volume - - Surface + - Volume en mm3 + - Surface en mm2 - Moyenne des rayons moyens - Ecart-type des rayons moyens - Sigma r tot @@ -159,8 +159,8 @@ def get_advanced_data(discrete_data:dict, update_progress_bar= progressbar_place update_progress_bar(100) return { "Tortuosité":T, - "Volume":V, - "Surface":S, + "Volume en mm3":V, + "Surface en mm2":S, "Moyenne des rayons moyens":R_mean, "Ecart-type des rayons moyens":R_mean_std, "Sigma r tot":sigma_r_tot, diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py index bb38ea6..43f4d06 100644 --- a/utils/gui/pyqt/main_window/MainWindow.py +++ b/utils/gui/pyqt/main_window/MainWindow.py @@ -10,6 +10,7 @@ from PyQt5 import QtWidgets from PyQt5.QtCore import QThread from PyQt5.QtWidgets import QFileDialog, QWidget from utils.files.input import ScannedObject +from utils.files.output import format_data, save_output_file from utils.gui.pyqt.main_window.Workers.AdvancedDataWorker import AdvancedDataWorker from utils.gui.pyqt.settings.Settings import Settings from utils.gui.pyqt.about.AboutThis import AboutThis @@ -43,10 +44,13 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.input_file_choose_btn.clicked.connect(self.select_file) self.output_folder_choose_btn.clicked.connect(self.select_folder) self.show_graph_checkbox.stateChanged.connect(self.toggle_graphs) + + self.actionOuvrir_un_fichier.triggered.connect(self.select_file) self.actionSauvegarder_le_model_redress.triggered.connect(self.save_model) self.actionPr_f_rennces.triggered.connect(self.show_settings) self.actionQuitter.triggered.connect(self.close) self.actionQ_propos_de_ce_logiciel.triggered.connect(self.show_about) + self.export_advanced_metrics.clicked.connect(self.export_advanced_data) # add default layer combobox value and setup the listenerr when index change self.layer_ComboBox.addItems(['Aucune couche']) @@ -132,6 +136,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # # # # ############################################################################### + def select_file(self): """ Open a file dialog to select the input file, @@ -340,14 +345,28 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): """ self.advanced_data = advanced_data self.tortuosity.setValue(advanced_data["Tortuosité"]) - self.volume.setValue(advanced_data["Volume"]) - self.surface.setValue(advanced_data["Surface"]) + self.volume.setValue(advanced_data["Volume en mm3"]) + self.surface.setValue(advanced_data["Surface en mm2"]) self.mean_r_mean.setValue(advanced_data["Moyenne des rayons moyens"]) self.sigma_r_mean.setValue(advanced_data["Ecart-type des rayons moyens"]) self.sigma_r_tot.setValue(advanced_data["Sigma r tot"]) self.MI_l.setValue(advanced_data["MI_l"]) self.MI_p.setValue(advanced_data["MI_p"]) + def export_advanced_data(self): + """ + Export the advanced data to a file + """ + if self.advanced_data is None: + ErrorPopup("Aucune analyse effectuée. Aucune donnée à exporter").show_popup() + return + file_path = QFileDialog.getSaveFileName(self, + "Exporter les indicateurs morphologiques", + "./", + "Fichier texte (*.txt)") + advanced_data = {key : [round(value,6),] for key,value in self.advanced_data.items()} + string_data = format_data(advanced_data,"\t") + save_output_file(file_path[0],string_data) def save_model(self): """ @@ -471,7 +490,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): False).native) self.set_status("Graphs rendered!") - def clear_slot(self,slot): for i in reversed(range(slot.count())): slot.itemAt(i).widget().setParent(None) @@ -504,6 +522,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.renderGraphs(self.obj,self.raw_data,self.discrete_data) self.renderDiscreteGraphs(self.obj,self.raw_data,self.discrete_data) self.start_analyse_button.setEnabled(True) + self.SettingsTab.setCurrentIndex(1) def update_progress_bar(self, value): """ diff --git a/utils/gui/pyqt/main_window/MainWindow.ui b/utils/gui/pyqt/main_window/MainWindow.ui index c1bbd3b..ecaa0c5 100644 --- a/utils/gui/pyqt/main_window/MainWindow.ui +++ b/utils/gui/pyqt/main_window/MainWindow.ui @@ -40,7 +40,7 @@ 0 - + Parametres @@ -179,7 +179,7 @@ - + Valeurs @@ -381,7 +381,7 @@ - Volume + Volume en mm3 @@ -407,7 +407,7 @@ - Surface + Surface en mm2 @@ -603,7 +603,7 @@ 0 - + true @@ -685,7 +685,7 @@ - + 2 @@ -764,7 +764,7 @@ - + 3 @@ -807,7 +807,7 @@ - + 4 diff --git a/utils/gui/pyqt/main_window/UI_MainWindow.py b/utils/gui/pyqt/main_window/UI_MainWindow.py index f3d9465..209284a 100644 --- a/utils/gui/pyqt/main_window/UI_MainWindow.py +++ b/utils/gui/pyqt/main_window/UI_MainWindow.py @@ -30,99 +30,99 @@ class Ui_MainWindow(object): self.gridLayout_2.setObjectName("gridLayout_2") self.SettingsTab = QtWidgets.QTabWidget(self.MainSettings) self.SettingsTab.setObjectName("SettingsTab") - self.tab_5 = QtWidgets.QWidget() - self.tab_5.setObjectName("tab_5") - self.gridLayout_14 = QtWidgets.QGridLayout(self.tab_5) + self.parameters = QtWidgets.QWidget() + self.parameters.setObjectName("parameters") + self.gridLayout_14 = QtWidgets.QGridLayout(self.parameters) self.gridLayout_14.setObjectName("gridLayout_14") self.MainSettingsLayout = QtWidgets.QVBoxLayout() self.MainSettingsLayout.setObjectName("MainSettingsLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") - self.input_file_label = QtWidgets.QLabel(self.tab_5) + self.input_file_label = QtWidgets.QLabel(self.parameters) self.input_file_label.setObjectName("input_file_label") self.horizontalLayout.addWidget(self.input_file_label) - self.input_file_choose_btn = QtWidgets.QPushButton(self.tab_5) + self.input_file_choose_btn = QtWidgets.QPushButton(self.parameters) self.input_file_choose_btn.setObjectName("input_file_choose_btn") self.horizontalLayout.addWidget(self.input_file_choose_btn) self.MainSettingsLayout.addLayout(self.horizontalLayout) - self.input_file_path = QtWidgets.QPlainTextEdit(self.tab_5) + self.input_file_path = QtWidgets.QPlainTextEdit(self.parameters) self.input_file_path.setObjectName("input_file_path") self.MainSettingsLayout.addWidget(self.input_file_path) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.output_folder_label = QtWidgets.QLabel(self.tab_5) + self.output_folder_label = QtWidgets.QLabel(self.parameters) self.output_folder_label.setObjectName("output_folder_label") self.horizontalLayout_2.addWidget(self.output_folder_label) - self.output_folder_choose_btn = QtWidgets.QPushButton(self.tab_5) + self.output_folder_choose_btn = QtWidgets.QPushButton(self.parameters) self.output_folder_choose_btn.setObjectName("output_folder_choose_btn") self.horizontalLayout_2.addWidget(self.output_folder_choose_btn) self.MainSettingsLayout.addLayout(self.horizontalLayout_2) - self.output_folder_path = QtWidgets.QPlainTextEdit(self.tab_5) + self.output_folder_path = QtWidgets.QPlainTextEdit(self.parameters) self.output_folder_path.setObjectName("output_folder_path") self.MainSettingsLayout.addWidget(self.output_folder_path) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.output_file_prefix_label = QtWidgets.QLabel(self.tab_5) + self.output_file_prefix_label = QtWidgets.QLabel(self.parameters) self.output_file_prefix_label.setObjectName("output_file_prefix_label") self.horizontalLayout_3.addWidget(self.output_file_prefix_label) - self.output_file_prefix = QtWidgets.QLineEdit(self.tab_5) + self.output_file_prefix = QtWidgets.QLineEdit(self.parameters) self.output_file_prefix.setObjectName("output_file_prefix") self.horizontalLayout_3.addWidget(self.output_file_prefix) self.MainSettingsLayout.addLayout(self.horizontalLayout_3) - self.discretisation_label = QtWidgets.QLabel(self.tab_5) + self.discretisation_label = QtWidgets.QLabel(self.parameters) self.discretisation_label.setObjectName("discretisation_label") self.MainSettingsLayout.addWidget(self.discretisation_label, 0, QtCore.Qt.AlignHCenter) - self.discretisation_value_selector = QtWidgets.QDoubleSpinBox(self.tab_5) + self.discretisation_value_selector = QtWidgets.QDoubleSpinBox(self.parameters) self.discretisation_value_selector.setMinimum(0.0) self.discretisation_value_selector.setProperty("value", 1.0) self.discretisation_value_selector.setObjectName("discretisation_value_selector") self.MainSettingsLayout.addWidget(self.discretisation_value_selector) - self.analyse_progress_bar = QtWidgets.QProgressBar(self.tab_5) + self.analyse_progress_bar = QtWidgets.QProgressBar(self.parameters) self.analyse_progress_bar.setProperty("value", 0) self.analyse_progress_bar.setObjectName("analyse_progress_bar") self.MainSettingsLayout.addWidget(self.analyse_progress_bar) self.graphs_params_layout = QtWidgets.QHBoxLayout() self.graphs_params_layout.setObjectName("graphs_params_layout") - self.show_graph_checkbox = QtWidgets.QCheckBox(self.tab_5) + self.show_graph_checkbox = QtWidgets.QCheckBox(self.parameters) self.show_graph_checkbox.setChecked(True) self.show_graph_checkbox.setObjectName("show_graph_checkbox") self.graphs_params_layout.addWidget(self.show_graph_checkbox) - self.label = QtWidgets.QLabel(self.tab_5) + self.label = QtWidgets.QLabel(self.parameters) self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label.setObjectName("label") self.graphs_params_layout.addWidget(self.label) - self.graph_nb_spinbox = QtWidgets.QSpinBox(self.tab_5) + self.graph_nb_spinbox = QtWidgets.QSpinBox(self.parameters) self.graph_nb_spinbox.setReadOnly(True) self.graph_nb_spinbox.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.graph_nb_spinbox.setObjectName("graph_nb_spinbox") self.graphs_params_layout.addWidget(self.graph_nb_spinbox) self.MainSettingsLayout.addLayout(self.graphs_params_layout) - self.start_analyse_button = QtWidgets.QPushButton(self.tab_5) + self.start_analyse_button = QtWidgets.QPushButton(self.parameters) self.start_analyse_button.setObjectName("start_analyse_button") self.MainSettingsLayout.addWidget(self.start_analyse_button) - self.status_text = QtWidgets.QLineEdit(self.tab_5) + self.status_text = QtWidgets.QLineEdit(self.parameters) self.status_text.setReadOnly(True) self.status_text.setObjectName("status_text") self.MainSettingsLayout.addWidget(self.status_text) self.gridLayout_14.addLayout(self.MainSettingsLayout, 0, 0, 1, 1) - self.SettingsTab.addTab(self.tab_5, "") - self.tab_6 = QtWidgets.QWidget() - self.tab_6.setObjectName("tab_6") - self.gridLayout_15 = QtWidgets.QGridLayout(self.tab_6) + self.SettingsTab.addTab(self.parameters, "") + self.values = QtWidgets.QWidget() + self.values.setObjectName("values") + self.gridLayout_15 = QtWidgets.QGridLayout(self.values) self.gridLayout_15.setObjectName("gridLayout_15") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setObjectName("formLayout") - self.layer_label = QtWidgets.QLabel(self.tab_6) + self.layer_label = QtWidgets.QLabel(self.values) self.layer_label.setAlignment(QtCore.Qt.AlignCenter) self.layer_label.setObjectName("layer_label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.layer_label) - self.layer_ComboBox = QtWidgets.QComboBox(self.tab_6) + self.layer_ComboBox = QtWidgets.QComboBox(self.values) self.layer_ComboBox.setObjectName("layer_ComboBox") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.layer_ComboBox) - self.interval_size_label = QtWidgets.QLabel(self.tab_6) + self.interval_size_label = QtWidgets.QLabel(self.values) self.interval_size_label.setObjectName("interval_size_label") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.interval_size_label) - self.interval_size = QtWidgets.QDoubleSpinBox(self.tab_6) + self.interval_size = QtWidgets.QDoubleSpinBox(self.values) self.interval_size.setReadOnly(True) self.interval_size.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.interval_size.setDecimals(6) @@ -130,20 +130,20 @@ class Ui_MainWindow(object): self.interval_size.setMaximum(999999.0) self.interval_size.setObjectName("interval_size") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.interval_size) - self.x_mean_label = QtWidgets.QLabel(self.tab_6) + self.x_mean_label = QtWidgets.QLabel(self.values) self.x_mean_label.setObjectName("x_mean_label") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.x_mean_label) - self.x_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.x_mean = QtWidgets.QDoubleSpinBox(self.values) self.x_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.x_mean.setDecimals(6) self.x_mean.setMinimum(-999999.0) self.x_mean.setMaximum(999999.0) self.x_mean.setObjectName("x_mean") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.x_mean) - self.y_mean_label = QtWidgets.QLabel(self.tab_6) + self.y_mean_label = QtWidgets.QLabel(self.values) self.y_mean_label.setObjectName("y_mean_label") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.y_mean_label) - self.y_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.y_mean = QtWidgets.QDoubleSpinBox(self.values) self.y_mean.setReadOnly(True) self.y_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.y_mean.setDecimals(6) @@ -151,10 +151,10 @@ class Ui_MainWindow(object): self.y_mean.setMaximum(999999.0) self.y_mean.setObjectName("y_mean") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.y_mean) - self.z_mean_label = QtWidgets.QLabel(self.tab_6) + self.z_mean_label = QtWidgets.QLabel(self.values) self.z_mean_label.setObjectName("z_mean_label") self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.z_mean_label) - self.z_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.z_mean = QtWidgets.QDoubleSpinBox(self.values) self.z_mean.setReadOnly(True) self.z_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.z_mean.setDecimals(6) @@ -162,10 +162,10 @@ class Ui_MainWindow(object): self.z_mean.setMaximum(999999.0) self.z_mean.setObjectName("z_mean") self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.z_mean) - self.r_mean_label = QtWidgets.QLabel(self.tab_6) + self.r_mean_label = QtWidgets.QLabel(self.values) self.r_mean_label.setObjectName("r_mean_label") self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.r_mean_label) - self.r_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.r_mean = QtWidgets.QDoubleSpinBox(self.values) self.r_mean.setReadOnly(True) self.r_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.r_mean.setDecimals(6) @@ -173,10 +173,10 @@ class Ui_MainWindow(object): self.r_mean.setMaximum(999999.0) self.r_mean.setObjectName("r_mean") self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.r_mean) - self.sigma_r_label = QtWidgets.QLabel(self.tab_6) + self.sigma_r_label = QtWidgets.QLabel(self.values) self.sigma_r_label.setObjectName("sigma_r_label") self.formLayout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.sigma_r_label) - self.sigma_r = QtWidgets.QDoubleSpinBox(self.tab_6) + self.sigma_r = QtWidgets.QDoubleSpinBox(self.values) self.sigma_r.setReadOnly(True) self.sigma_r.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.sigma_r.setDecimals(6) @@ -184,10 +184,10 @@ class Ui_MainWindow(object): self.sigma_r.setMaximum(999999.0) self.sigma_r.setObjectName("sigma_r") self.formLayout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.sigma_r) - self.tortuosity_label = QtWidgets.QLabel(self.tab_6) + self.tortuosity_label = QtWidgets.QLabel(self.values) self.tortuosity_label.setObjectName("tortuosity_label") self.formLayout.setWidget(8, QtWidgets.QFormLayout.LabelRole, self.tortuosity_label) - self.tortuosity = QtWidgets.QDoubleSpinBox(self.tab_6) + self.tortuosity = QtWidgets.QDoubleSpinBox(self.values) self.tortuosity.setReadOnly(True) self.tortuosity.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.tortuosity.setDecimals(6) @@ -195,10 +195,10 @@ class Ui_MainWindow(object): self.tortuosity.setMaximum(999999.0) self.tortuosity.setObjectName("tortuosity") self.formLayout.setWidget(8, QtWidgets.QFormLayout.FieldRole, self.tortuosity) - self.volume_label = QtWidgets.QLabel(self.tab_6) + self.volume_label = QtWidgets.QLabel(self.values) self.volume_label.setObjectName("volume_label") self.formLayout.setWidget(9, QtWidgets.QFormLayout.LabelRole, self.volume_label) - self.volume = QtWidgets.QDoubleSpinBox(self.tab_6) + self.volume = QtWidgets.QDoubleSpinBox(self.values) self.volume.setReadOnly(True) self.volume.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.volume.setDecimals(6) @@ -206,10 +206,10 @@ class Ui_MainWindow(object): self.volume.setMaximum(999999.0) self.volume.setObjectName("volume") self.formLayout.setWidget(9, QtWidgets.QFormLayout.FieldRole, self.volume) - self.surface_label = QtWidgets.QLabel(self.tab_6) + self.surface_label = QtWidgets.QLabel(self.values) self.surface_label.setObjectName("surface_label") self.formLayout.setWidget(10, QtWidgets.QFormLayout.LabelRole, self.surface_label) - self.surface = QtWidgets.QDoubleSpinBox(self.tab_6) + self.surface = QtWidgets.QDoubleSpinBox(self.values) self.surface.setReadOnly(True) self.surface.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.surface.setDecimals(6) @@ -217,10 +217,10 @@ class Ui_MainWindow(object): self.surface.setMaximum(999999.0) self.surface.setObjectName("surface") self.formLayout.setWidget(10, QtWidgets.QFormLayout.FieldRole, self.surface) - self.mean_r_mean_label = QtWidgets.QLabel(self.tab_6) + self.mean_r_mean_label = QtWidgets.QLabel(self.values) self.mean_r_mean_label.setObjectName("mean_r_mean_label") self.formLayout.setWidget(11, QtWidgets.QFormLayout.LabelRole, self.mean_r_mean_label) - self.mean_r_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.mean_r_mean = QtWidgets.QDoubleSpinBox(self.values) self.mean_r_mean.setReadOnly(True) self.mean_r_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.mean_r_mean.setDecimals(6) @@ -228,10 +228,10 @@ class Ui_MainWindow(object): self.mean_r_mean.setMaximum(999999.0) self.mean_r_mean.setObjectName("mean_r_mean") self.formLayout.setWidget(11, QtWidgets.QFormLayout.FieldRole, self.mean_r_mean) - self.sigma_r_mean_label = QtWidgets.QLabel(self.tab_6) + self.sigma_r_mean_label = QtWidgets.QLabel(self.values) self.sigma_r_mean_label.setObjectName("sigma_r_mean_label") self.formLayout.setWidget(12, QtWidgets.QFormLayout.LabelRole, self.sigma_r_mean_label) - self.sigma_r_mean = QtWidgets.QDoubleSpinBox(self.tab_6) + self.sigma_r_mean = QtWidgets.QDoubleSpinBox(self.values) self.sigma_r_mean.setReadOnly(True) self.sigma_r_mean.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.sigma_r_mean.setDecimals(6) @@ -239,10 +239,10 @@ class Ui_MainWindow(object): self.sigma_r_mean.setMaximum(999999.0) self.sigma_r_mean.setObjectName("sigma_r_mean") self.formLayout.setWidget(12, QtWidgets.QFormLayout.FieldRole, self.sigma_r_mean) - self.sigma_r_tot_label = QtWidgets.QLabel(self.tab_6) + self.sigma_r_tot_label = QtWidgets.QLabel(self.values) self.sigma_r_tot_label.setObjectName("sigma_r_tot_label") self.formLayout.setWidget(13, QtWidgets.QFormLayout.LabelRole, self.sigma_r_tot_label) - self.sigma_r_tot = QtWidgets.QDoubleSpinBox(self.tab_6) + self.sigma_r_tot = QtWidgets.QDoubleSpinBox(self.values) self.sigma_r_tot.setReadOnly(True) self.sigma_r_tot.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.sigma_r_tot.setDecimals(6) @@ -250,10 +250,10 @@ class Ui_MainWindow(object): self.sigma_r_tot.setMaximum(999999.0) self.sigma_r_tot.setObjectName("sigma_r_tot") self.formLayout.setWidget(13, QtWidgets.QFormLayout.FieldRole, self.sigma_r_tot) - self.MI_p_label = QtWidgets.QLabel(self.tab_6) + self.MI_p_label = QtWidgets.QLabel(self.values) self.MI_p_label.setObjectName("MI_p_label") self.formLayout.setWidget(14, QtWidgets.QFormLayout.LabelRole, self.MI_p_label) - self.MI_p = QtWidgets.QDoubleSpinBox(self.tab_6) + self.MI_p = QtWidgets.QDoubleSpinBox(self.values) self.MI_p.setReadOnly(True) self.MI_p.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.MI_p.setDecimals(6) @@ -261,10 +261,10 @@ class Ui_MainWindow(object): self.MI_p.setMaximum(999999.0) self.MI_p.setObjectName("MI_p") self.formLayout.setWidget(14, QtWidgets.QFormLayout.FieldRole, self.MI_p) - self.MI_l_label = QtWidgets.QLabel(self.tab_6) + self.MI_l_label = QtWidgets.QLabel(self.values) self.MI_l_label.setObjectName("MI_l_label") self.formLayout.setWidget(15, QtWidgets.QFormLayout.LabelRole, self.MI_l_label) - self.MI_l = QtWidgets.QDoubleSpinBox(self.tab_6) + self.MI_l = QtWidgets.QDoubleSpinBox(self.values) self.MI_l.setReadOnly(True) self.MI_l.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) self.MI_l.setDecimals(6) @@ -272,16 +272,16 @@ class Ui_MainWindow(object): self.MI_l.setMaximum(999999.0) self.MI_l.setObjectName("MI_l") self.formLayout.setWidget(15, QtWidgets.QFormLayout.FieldRole, self.MI_l) - self.line = QtWidgets.QFrame(self.tab_6) + self.line = QtWidgets.QFrame(self.values) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.formLayout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.line) - self.export_advanced_metrics = QtWidgets.QPushButton(self.tab_6) + self.export_advanced_metrics = QtWidgets.QPushButton(self.values) self.export_advanced_metrics.setObjectName("export_advanced_metrics") self.formLayout.setWidget(16, QtWidgets.QFormLayout.LabelRole, self.export_advanced_metrics) self.gridLayout_15.addLayout(self.formLayout, 0, 0, 1, 1) - self.SettingsTab.addTab(self.tab_6, "") + self.SettingsTab.addTab(self.values, "") self.gridLayout_2.addWidget(self.SettingsTab, 1, 0, 1, 1) self.horizontalLayout_4.addWidget(self.MainSettings) self.Graphs = QtWidgets.QWidget(self.centralwidget) @@ -293,12 +293,12 @@ class Ui_MainWindow(object): self.GraphTabs = QtWidgets.QTabWidget(self.Graphs) self.GraphTabs.setEnabled(True) self.GraphTabs.setObjectName("GraphTabs") - self.tab = QtWidgets.QWidget() - self.tab.setEnabled(True) - self.tab.setObjectName("tab") - self.gridLayout_5 = QtWidgets.QGridLayout(self.tab) + self.graph_pane_1 = QtWidgets.QWidget() + self.graph_pane_1.setEnabled(True) + self.graph_pane_1.setObjectName("graph_pane_1") + self.gridLayout_5 = QtWidgets.QGridLayout(self.graph_pane_1) self.gridLayout_5.setObjectName("gridLayout_5") - self.slot1_frame = QtWidgets.QFrame(self.tab) + self.slot1_frame = QtWidgets.QFrame(self.graph_pane_1) self.slot1_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot1_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot1_frame.setObjectName("slot1_frame") @@ -311,7 +311,7 @@ class Ui_MainWindow(object): self.slot1ComboBox.setObjectName("slot1ComboBox") self.gridLayout_10.addWidget(self.slot1ComboBox, 0, 0, 1, 1) self.gridLayout_5.addWidget(self.slot1_frame, 0, 1, 1, 1) - self.slot2_frame = QtWidgets.QFrame(self.tab) + self.slot2_frame = QtWidgets.QFrame(self.graph_pane_1) self.slot2_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot2_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot2_frame.setObjectName("slot2_frame") @@ -324,7 +324,7 @@ class Ui_MainWindow(object): self.slot2ComboBox.setObjectName("slot2ComboBox") self.gridLayout_11.addWidget(self.slot2ComboBox, 0, 0, 1, 1) self.gridLayout_5.addWidget(self.slot2_frame, 1, 0, 1, 1) - self.slot3_frame = QtWidgets.QFrame(self.tab) + self.slot3_frame = QtWidgets.QFrame(self.graph_pane_1) self.slot3_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot3_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot3_frame.setObjectName("slot3_frame") @@ -337,7 +337,7 @@ class Ui_MainWindow(object): self.slot3ComboBox.setObjectName("slot3ComboBox") self.gridLayout_12.addWidget(self.slot3ComboBox, 0, 0, 1, 1) self.gridLayout_5.addWidget(self.slot3_frame, 1, 1, 1, 1) - self.slot0_frame = QtWidgets.QFrame(self.tab) + self.slot0_frame = QtWidgets.QFrame(self.graph_pane_1) self.slot0_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot0_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot0_frame.setObjectName("slot0_frame") @@ -350,12 +350,12 @@ class Ui_MainWindow(object): self.slot0ComboBox.setObjectName("slot0ComboBox") self.gridLayout_8.addWidget(self.slot0ComboBox, 0, 0, 1, 1) self.gridLayout_5.addWidget(self.slot0_frame, 0, 0, 1, 1) - self.GraphTabs.addTab(self.tab, "") - self.tab_2 = QtWidgets.QWidget() - self.tab_2.setObjectName("tab_2") - self.gridLayout_13 = QtWidgets.QGridLayout(self.tab_2) + self.GraphTabs.addTab(self.graph_pane_1, "") + self.graph_pane_2 = QtWidgets.QWidget() + self.graph_pane_2.setObjectName("graph_pane_2") + self.gridLayout_13 = QtWidgets.QGridLayout(self.graph_pane_2) self.gridLayout_13.setObjectName("gridLayout_13") - self.slot5_frame = QtWidgets.QFrame(self.tab_2) + self.slot5_frame = QtWidgets.QFrame(self.graph_pane_2) self.slot5_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot5_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot5_frame.setObjectName("slot5_frame") @@ -368,7 +368,7 @@ class Ui_MainWindow(object): self.slot5ComboBox.setObjectName("slot5ComboBox") self.gridLayout_18.addWidget(self.slot5ComboBox, 0, 0, 1, 1) self.gridLayout_13.addWidget(self.slot5_frame, 1, 1, 1, 1) - self.slot4_frame = QtWidgets.QFrame(self.tab_2) + self.slot4_frame = QtWidgets.QFrame(self.graph_pane_2) self.slot4_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot4_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot4_frame.setObjectName("slot4_frame") @@ -381,7 +381,7 @@ class Ui_MainWindow(object): self.slot4ComboBox.setObjectName("slot4ComboBox") self.gridLayout_17.addWidget(self.slot4ComboBox, 0, 0, 1, 1) self.gridLayout_13.addWidget(self.slot4_frame, 1, 0, 1, 1) - self.slot6_frame = QtWidgets.QFrame(self.tab_2) + self.slot6_frame = QtWidgets.QFrame(self.graph_pane_2) self.slot6_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot6_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot6_frame.setObjectName("slot6_frame") @@ -394,7 +394,7 @@ class Ui_MainWindow(object): self.slot6ComboBox.setObjectName("slot6ComboBox") self.gridLayout_19.addWidget(self.slot6ComboBox, 0, 0, 1, 1) self.gridLayout_13.addWidget(self.slot6_frame, 2, 0, 1, 1) - self.slot7_frame = QtWidgets.QFrame(self.tab_2) + self.slot7_frame = QtWidgets.QFrame(self.graph_pane_2) self.slot7_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot7_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot7_frame.setObjectName("slot7_frame") @@ -407,12 +407,12 @@ class Ui_MainWindow(object): self.slot7ComboBox.setObjectName("slot7ComboBox") self.gridLayout_20.addWidget(self.slot7ComboBox, 0, 0, 1, 1) self.gridLayout_13.addWidget(self.slot7_frame, 2, 1, 1, 1) - self.GraphTabs.addTab(self.tab_2, "") - self.tab_3 = QtWidgets.QWidget() - self.tab_3.setObjectName("tab_3") - self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.tab_3) + self.GraphTabs.addTab(self.graph_pane_2, "") + self.graph_pane_3 = QtWidgets.QWidget() + self.graph_pane_3.setObjectName("graph_pane_3") + self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.graph_pane_3) self.horizontalLayout_5.setObjectName("horizontalLayout_5") - self.slot8_frame = QtWidgets.QFrame(self.tab_3) + self.slot8_frame = QtWidgets.QFrame(self.graph_pane_3) self.slot8_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot8_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot8_frame.setObjectName("slot8_frame") @@ -425,7 +425,7 @@ class Ui_MainWindow(object): self.slot8.setObjectName("slot8") self.gridLayout_7.addLayout(self.slot8, 1, 0, 1, 1) self.horizontalLayout_5.addWidget(self.slot8_frame) - self.slot9_frame = QtWidgets.QFrame(self.tab_3) + self.slot9_frame = QtWidgets.QFrame(self.graph_pane_3) self.slot9_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot9_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot9_frame.setObjectName("slot9_frame") @@ -438,12 +438,12 @@ class Ui_MainWindow(object): self.slot9.setObjectName("slot9") self.gridLayout_6.addLayout(self.slot9, 1, 0, 1, 1) self.horizontalLayout_5.addWidget(self.slot9_frame) - self.GraphTabs.addTab(self.tab_3, "") - self.tab_4 = QtWidgets.QWidget() - self.tab_4.setObjectName("tab_4") - self.gridLayout_4 = QtWidgets.QGridLayout(self.tab_4) + self.GraphTabs.addTab(self.graph_pane_3, "") + self.graph_pane_4 = QtWidgets.QWidget() + self.graph_pane_4.setObjectName("graph_pane_4") + self.gridLayout_4 = QtWidgets.QGridLayout(self.graph_pane_4) self.gridLayout_4.setObjectName("gridLayout_4") - self.slot10_frame = QtWidgets.QFrame(self.tab_4) + self.slot10_frame = QtWidgets.QFrame(self.graph_pane_4) self.slot10_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.slot10_frame.setFrameShadow(QtWidgets.QFrame.Raised) self.slot10_frame.setObjectName("slot10_frame") @@ -456,7 +456,7 @@ class Ui_MainWindow(object): self.slot10.setObjectName("slot10") self.gridLayout_9.addLayout(self.slot10, 1, 0, 1, 1) self.gridLayout_4.addWidget(self.slot10_frame, 0, 0, 1, 1) - self.GraphTabs.addTab(self.tab_4, "") + self.GraphTabs.addTab(self.graph_pane_4, "") self.gridLayout_3.addWidget(self.GraphTabs, 2, 0, 1, 1) self.horizontalLayout_4.addWidget(self.Graphs) self.gridLayout.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) @@ -506,7 +506,7 @@ class Ui_MainWindow(object): self.show_graph_checkbox.setText(_translate("MainWindow", "afficher les graphes")) self.label.setText(_translate("MainWindow", "Nombre de graphes :")) self.start_analyse_button.setText(_translate("MainWindow", "Analyser le fichier")) - self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.tab_5), _translate("MainWindow", "Parametres")) + self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.parameters), _translate("MainWindow", "Parametres")) self.layer_label.setText(_translate("MainWindow", "Numero de la couche a traiter :")) self.interval_size_label.setText(_translate("MainWindow", "Taille de l\'intervale")) self.x_mean_label.setText(_translate("MainWindow", "X moyen")) @@ -515,19 +515,19 @@ class Ui_MainWindow(object): self.r_mean_label.setText(_translate("MainWindow", "Rayon moyen")) self.sigma_r_label.setText(_translate("MainWindow", "Ecart type des rayons (σR)")) self.tortuosity_label.setText(_translate("MainWindow", "Tortuosité")) - self.volume_label.setText(_translate("MainWindow", "Volume")) - self.surface_label.setText(_translate("MainWindow", "Surface")) + self.volume_label.setText(_translate("MainWindow", "Volume en mm3")) + self.surface_label.setText(_translate("MainWindow", "Surface en mm2")) self.mean_r_mean_label.setText(_translate("MainWindow", "Moyenne des rayons moyens ()")) self.sigma_r_mean_label.setText(_translate("MainWindow", "Ecart type des rayons moyens(σ)")) self.sigma_r_tot_label.setText(_translate("MainWindow", "σtot")) self.MI_p_label.setText(_translate("MainWindow", "MI_p")) self.MI_l_label.setText(_translate("MainWindow", "MI_l")) self.export_advanced_metrics.setText(_translate("MainWindow", "Exporter les variables")) - self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.tab_6), _translate("MainWindow", "Valeurs")) - self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.tab), _translate("MainWindow", "1")) - self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.tab_2), _translate("MainWindow", "2")) - self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.tab_3), _translate("MainWindow", "3")) - self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.tab_4), _translate("MainWindow", "4")) + self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.values), _translate("MainWindow", "Valeurs")) + self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.graph_pane_1), _translate("MainWindow", "1")) + self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.graph_pane_2), _translate("MainWindow", "2")) + self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.graph_pane_3), _translate("MainWindow", "3")) + self.GraphTabs.setTabText(self.GraphTabs.indexOf(self.graph_pane_4), _translate("MainWindow", "4")) self.menuRichier.setTitle(_translate("MainWindow", "Fichier")) self.menuA_propos.setTitle(_translate("MainWindow", "A propos")) self.actionOuvrir_un_fichier.setText(_translate("MainWindow", "Ouvrir un fichier")) diff --git a/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py b/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py index d84c1b5..a7c6654 100644 --- a/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py +++ b/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py @@ -31,8 +31,8 @@ class AdvancedDataWorker(Worker): This function is called when the thread is started. It calculates the advanced data and emits a dict with the following keys: - Tortuosite - - Volume - - Surface + - Volume en mm3 + - Surface en mm2 - Moyenne des rayons moyens - Ecart-type des rayons moyens - Sigma r tot diff --git a/utils/math/position_manipulation.py b/utils/math/position_manipulation.py index a5241be..778f85a 100644 --- a/utils/math/position_manipulation.py +++ b/utils/math/position_manipulation.py @@ -81,7 +81,6 @@ def verticalise(obj:ScannedObject): Rotate the object so that the principal axis of inertia is vertical :param obj: Object to analyse """ - cog = get_mass_properties(obj) cog, inertia = get_mass_properties(obj)[1:] [val,vect] = np.linalg.eig(inertia)