🔧 chore(data_processing.py): update keys in the dict returned by get_advanced_data function to be more descriptive

 feat(MainWindow.py): add functionality to export advanced data to a text file
🚀 feat(MainWindow.py): add button to export advanced data to a text file
🚀 feat(MainWindow.ui): update labels for Volume and Surface to include units
The keys in the dict returned by the get_advanced_data function were updated to be more descriptive. The export_advanced_data function was added to the MainWindow class to allow the user to export the advanced data to a text file. A button was added to the GUI to allow the user to export the advanced data. The labels for Volume and Surface were updated to include the units of measurement.

🎨 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.
This commit is contained in:
Djalim Simaila 2023-05-10 09:59:44 +02:00
parent fb2bb6e9ce
commit 16f43c2126
6 changed files with 128 additions and 110 deletions

View File

@ -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,

View File

@ -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):
"""

View File

@ -40,7 +40,7 @@
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_5">
<widget class="QWidget" name="parameters">
<attribute name="title">
<string>Parametres</string>
</attribute>
@ -179,7 +179,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_6">
<widget class="QWidget" name="values">
<attribute name="title">
<string>Valeurs</string>
</attribute>
@ -381,7 +381,7 @@
<item row="9" column="0">
<widget class="QLabel" name="volume_label">
<property name="text">
<string>Volume</string>
<string>Volume en mm3</string>
</property>
</widget>
</item>
@ -407,7 +407,7 @@
<item row="10" column="0">
<widget class="QLabel" name="surface_label">
<property name="text">
<string>Surface</string>
<string>Surface en mm2</string>
</property>
</widget>
</item>
@ -603,7 +603,7 @@
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<widget class="QWidget" name="graph_pane_1">
<property name="enabled">
<bool>true</bool>
</property>
@ -685,7 +685,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<widget class="QWidget" name="graph_pane_2">
<attribute name="title">
<string>2</string>
</attribute>
@ -764,7 +764,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<widget class="QWidget" name="graph_pane_3">
<attribute name="title">
<string>3</string>
</attribute>
@ -807,7 +807,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<widget class="QWidget" name="graph_pane_4">
<attribute name="title">
<string>4</string>
</attribute>

View File

@ -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 (<R>)"))
self.sigma_r_mean_label.setText(_translate("MainWindow", "Ecart type des rayons moyens(σ<R>)"))
self.sigma_r_tot_label.setText(_translate("MainWindow", "σ<R>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"))

View File

@ -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

View File

@ -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)