phm_gui.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """
5  PHM Gui
6 """
7 
8 import sys
9 import os
10 import time
11 from threading import Thread, Event
12 from datetime import datetime
13 from PyQt5 import QtCore, QtGui, QtWidgets
14 from PyQt5.QtCore import QThread, pyqtSignal
15 from std_msgs.msg import String
16 import yaml
17 import rospy
18 from phm_reliability_calculation.class_reliability_calculation import ReliabilityCalculation
19 from phm_hazard_rate_calculation.class_failure_rate_calculation import FailureRateCalculation
20 from phm_robot_task_completion.class_robot_task_completion import RobotTaskCompletion, SimulationRobotTaskCompletion
21 from phm_robot_task_completion.class_potc_subscriber import POTCSubscriber
22 from phm_start.class_real_time_plot import DynamicPlot, ReliabilityPlot, POTCPlot
23 from phm_start.class_ros_sensor import ROSSensor
24 from phm_start.phm_graph_ui import Ui_StaticGraphWindow
25 from phm_start.phm_electrical_equipments_gui import ElectricalEquipmentsWindow
26 from phm_start.phm_mechanical_equipments_gui import MechanicalEquipmentsWindow
27 from phm_start.select_file_gui import SelectFileGui
28 
29 
30 class PHMGui(object):
31  """
32  PHM Gui Class
33  """
34  def __init__(self):
35  self.main_dict = {"System": dict()}
36  self.phm_gui_time = 1
37 
38  self.publisher_gui_hazard_rate = rospy.Publisher('/gui_hazard_rate', String, queue_size=10)
39  self.publisher_gui_reliability = rospy.Publisher('/gui_reliability', String, queue_size=10)
40  self.publisher_gui_actual_potc = rospy.Publisher('/gui_actual_potc', String, queue_size=10)
41  self.publisher_gui_predict_potc = rospy.Publisher('/gui_predict_potc', String, queue_size=10)
42 
43  self.thread_rate = rospy.Rate(1)
44 
45  self.temperature_t0 = 25
46  self.temperature_sensor_dict = dict({"System": {"Avarage": self.temperature_t0, "Sensors": dict()}})
47 
51 
52  self.potc_main_dict = {"Actual": {"Nominal": {"POTC": list([1]), "Time": list([0])}, "Sensor Based": {"POTC": list([1]), "Time": list([0])}},
53  "Predict": {"Nominal": {"POTC": list([1]), "Time": list([0])}, "Sensor Based": {"POTC": list([1]), "Time": list([0])}}}
54 
55  self.prognostic_potc_x_list = list([0, 1, 2, 3])
56  self.prognostic_potc_y_list = list([1.0, 1.0, 1.0, 1.0])
57 
58  self.potc_ros = POTCSubscriber()
59  self.potc_ros.main_func()
60 
61  self.reliability_plot_scale_list = list([0, 1])
62 
63  self.equipment_list = ["Electrical Equipment", "Mechanical Equipment"]
64  self.electrical_equipments_dict = dict(rospy.get_param("~Electrical Equipment"))
65  self.mechanical_equipments_dict = dict(rospy.get_param("~Mechanical Equipment"))
66 
67  self.capacitor_style_dict = dict(rospy.get_param("~Capacitor Style"))
68  self.diode_type_dict = dict(rospy.get_param("~Diode Type"))
69  self.resistor_type_dict = dict(rospy.get_param("~Resistor Style"))
70 
71  self.shaft_sections_dict = dict()
72 
73  self.prognostic_potc_dict = dict()
74 
75  self.configuration_reliability_model = ["Exponential Distribution", "Rayleigh Distribution", "Weibull Distribution", "Curve Distribution"]
76  self.configuration_reliability_unit = ["km/h", "m/s"]
77 
78  self.selected_reliability_model = "Exponential Distribution"
80  self.shape_parameter = 1
81 
82  self.r_calculation_class = ReliabilityCalculation()
83  self.fr_calculation_class = FailureRateCalculation()
84 
85  self.type_list = ['Serial', 'Parallel']
86 
87 # ------------------------------------------------------------------------------------------------
88 
89  def setupUi(self, MainWindow):
90  """
91  PHM Gui Setup Ui
92  """
93  MainWindow.setObjectName("MainWindow")
94  MainWindow.resize(1100, 900)
95  sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
96  sizePolicy.setHorizontalStretch(0)
97  sizePolicy.setVerticalStretch(0)
98  sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
99  MainWindow.setSizePolicy(sizePolicy)
100  MainWindow.setMinimumSize(QtCore.QSize(1100, 900))
101  MainWindow.setMaximumSize(QtCore.QSize(1100, 900))
102  self.centralwidget = QtWidgets.QWidget(MainWindow)
103  self.centralwidget.setObjectName("centralwidget")
104  self.tabWidget_general = QtWidgets.QTabWidget(self.centralwidget)
105  self.tabWidget_general.setGeometry(QtCore.QRect(0, 0, 1100, 900))
106  self.tabWidget_general.setFocusPolicy(QtCore.Qt.NoFocus)
107  self.tabWidget_general.setObjectName("tabWidget_general")
108  self.tab_configuration = QtWidgets.QWidget()
109  self.tab_configuration.setObjectName("tab_configuration")
110  self.tabWidget_configuration = QtWidgets.QTabWidget(self.tab_configuration)
111  self.tabWidget_configuration.setGeometry(QtCore.QRect(0, 0, 1100, 731))
112  self.tabWidget_configuration.setObjectName("tabWidget_configuration")
113  self.tab_add_object = QtWidgets.QWidget()
114  self.tab_add_object.setObjectName("tab_add_object")
115  self.tabWidget = QtWidgets.QTabWidget(self.tab_add_object)
116  self.tabWidget.setGeometry(QtCore.QRect(0, 0, 1100, 720))
117  self.tabWidget.setObjectName("tabWidget")
118  self.tab_3 = QtWidgets.QWidget()
119  self.tab_3.setObjectName("tab_3")
120  self.groupBox_c_ao_am_add_module = QtWidgets.QGroupBox(self.tab_3)
121  self.groupBox_c_ao_am_add_module.setGeometry(QtCore.QRect(50, 20, 421, 70))
122  self.groupBox_c_ao_am_add_module.setAlignment(QtCore.Qt.AlignCenter)
123  self.groupBox_c_ao_am_add_module.setFlat(False)
124  self.groupBox_c_ao_am_add_module.setCheckable(False)
125  self.groupBox_c_ao_am_add_module.setObjectName("groupBox_c_ao_am_add_module")
127  self.lineEdit_c_ao_am_module_name.setGeometry(QtCore.QRect(140, 25, 210, 27))
128  self.lineEdit_c_ao_am_module_name.setObjectName("lineEdit_c_ao_am_module_name")
129  self.label_12 = QtWidgets.QLabel(self.groupBox_c_ao_am_add_module)
130  self.label_12.setGeometry(QtCore.QRect(0, 30, 131, 21))
131  self.label_12.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
132  self.label_12.setObjectName("label_12")
133  self.groupBox_c_ao_am_module_fr = QtWidgets.QGroupBox(self.tab_3)
134  self.groupBox_c_ao_am_module_fr.setGeometry(QtCore.QRect(50, 110, 351, 191))
135  self.groupBox_c_ao_am_module_fr.setFlat(False)
136  self.groupBox_c_ao_am_module_fr.setCheckable(True)
137  self.groupBox_c_ao_am_module_fr.setChecked(False)
138  self.groupBox_c_ao_am_module_fr.setObjectName("groupBox_c_ao_am_module_fr")
140  self.lineEdit_c_ao_am_module_fr.setGeometry(QtCore.QRect(160, 30, 160, 27))
141  self.lineEdit_c_ao_am_module_fr.setObjectName("lineEdit_c_ao_am_module_fr")
142  self.label_13 = QtWidgets.QLabel(self.groupBox_c_ao_am_module_fr)
143  self.label_13.setGeometry(QtCore.QRect(10, 30, 141, 21))
144  self.label_13.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
145  self.label_13.setObjectName("label_13")
146  self.label_42 = QtWidgets.QLabel(self.groupBox_c_ao_am_module_fr)
147  self.label_42.setGeometry(QtCore.QRect(0, 110, 150, 31))
148  self.label_42.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
149  self.label_42.setObjectName("label_42")
150  self.label_43 = QtWidgets.QLabel(self.groupBox_c_ao_am_module_fr)
151  self.label_43.setGeometry(QtCore.QRect(0, 150, 150, 21))
152  self.label_43.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
153  self.label_43.setObjectName("label_43")
155  self.comboBox_c_ao_am_select_type.setGeometry(QtCore.QRect(160, 110, 160, 27))
156  self.comboBox_c_ao_am_select_type.setObjectName("comboBox_c_ao_am_select_type")
157  self.label_44 = QtWidgets.QLabel(self.groupBox_c_ao_am_module_fr)
158  self.label_44.setGeometry(QtCore.QRect(20, 70, 131, 31))
159  self.label_44.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
160  self.label_44.setObjectName("label_44")
161  self.spinBox_c_ao_am_quantity = QtWidgets.QSpinBox(self.groupBox_c_ao_am_module_fr)
162  self.spinBox_c_ao_am_quantity.setGeometry(QtCore.QRect(160, 70, 160, 27))
163  self.spinBox_c_ao_am_quantity.setMinimum(1)
164  self.spinBox_c_ao_am_quantity.setMaximum(9999999)
165  self.spinBox_c_ao_am_quantity.setObjectName("spinBox_c_ao_am_quantity")
167  self.lineEdit_c_ao_am_total_module_fr.setGeometry(QtCore.QRect(160, 150, 160, 27))
168  self.lineEdit_c_ao_am_total_module_fr.setReadOnly(True)
169  self.lineEdit_c_ao_am_total_module_fr.setObjectName("lineEdit_c_ao_am_total_module_fr")
170  self.pushButton_c_ao_am_add_module = QtWidgets.QPushButton(self.tab_3)
171  self.pushButton_c_ao_am_add_module.setGeometry(QtCore.QRect(480, 200, 125, 50))
172  self.pushButton_c_ao_am_add_module.setObjectName("pushButton_c_ao_am_add_module")
173  self.groupBox_c_ao_am_list_of_modules = QtWidgets.QGroupBox(self.tab_3)
174  self.groupBox_c_ao_am_list_of_modules.setGeometry(QtCore.QRect(670, 10, 411, 291))
175  self.groupBox_c_ao_am_list_of_modules.setObjectName("groupBox_c_ao_am_list_of_modules")
177  self.listWidget_c_ao_am_list_of_modules.setGeometry(QtCore.QRect(0, 30, 400, 200))
178  self.listWidget_c_ao_am_list_of_modules.setObjectName("listWidget_c_ao_am_list_of_modules")
180  self.pushButton_c_ao_am_delete_module.setGeometry(QtCore.QRect(300, 240, 99, 27))
181  self.pushButton_c_ao_am_delete_module.setObjectName("pushButton_c_ao_am_delete_module")
182  self.line_4 = QtWidgets.QFrame(self.tab_3)
183  self.line_4.setGeometry(QtCore.QRect(630, 0, 16, 661))
184  self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
185  self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
186  self.line_4.setObjectName("line_4")
187  self.tabWidget.addTab(self.tab_3, "")
188  self.tab_5 = QtWidgets.QWidget()
189  self.tab_5.setObjectName("tab_5")
190  self.groupBox_c_ao_asm_sub_module_fr = QtWidgets.QGroupBox(self.tab_5)
191  self.groupBox_c_ao_asm_sub_module_fr.setGeometry(QtCore.QRect(50, 90, 351, 181))
192  self.groupBox_c_ao_asm_sub_module_fr.setFlat(False)
193  self.groupBox_c_ao_asm_sub_module_fr.setCheckable(True)
194  self.groupBox_c_ao_asm_sub_module_fr.setChecked(False)
195  self.groupBox_c_ao_asm_sub_module_fr.setObjectName("groupBox_c_ao_asm_sub_module_fr")
196  self.label_18 = QtWidgets.QLabel(self.groupBox_c_ao_asm_sub_module_fr)
197  self.label_18.setGeometry(QtCore.QRect(0, 30, 171, 21))
198  self.label_18.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
199  self.label_18.setObjectName("label_18")
201  self.lineEdit_c_ao_asm_sub_module_fr.setGeometry(QtCore.QRect(180, 30, 160, 27))
202  self.lineEdit_c_ao_asm_sub_module_fr.setObjectName("lineEdit_c_ao_asm_sub_module_fr")
203  self.label_36 = QtWidgets.QLabel(self.groupBox_c_ao_asm_sub_module_fr)
204  self.label_36.setGeometry(QtCore.QRect(10, 70, 161, 31))
205  self.label_36.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
206  self.label_36.setObjectName("label_36")
208  self.comboBox_c_ao_asm_sfr_select_type.setGeometry(QtCore.QRect(180, 110, 160, 27))
209  self.comboBox_c_ao_asm_sfr_select_type.setObjectName("comboBox_c_ao_asm_sfr_select_type")
210  self.label_40 = QtWidgets.QLabel(self.groupBox_c_ao_asm_sub_module_fr)
211  self.label_40.setGeometry(QtCore.QRect(-10, 150, 181, 21))
212  self.label_40.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
213  self.label_40.setObjectName("label_40")
215  self.spinBox_c_ao_asm_sfr_quantity.setGeometry(QtCore.QRect(180, 70, 160, 27))
216  self.spinBox_c_ao_asm_sfr_quantity.setMinimum(1)
217  self.spinBox_c_ao_asm_sfr_quantity.setMaximum(9999999)
218  self.spinBox_c_ao_asm_sfr_quantity.setObjectName("spinBox_c_ao_asm_sfr_quantity")
220  self.lineEdit_c_ao_asm_sfr_total_component_fr.setGeometry(QtCore.QRect(180, 150, 160, 27))
221  self.lineEdit_c_ao_asm_sfr_total_component_fr.setReadOnly(True)
222  self.lineEdit_c_ao_asm_sfr_total_component_fr.setObjectName("lineEdit_c_ao_asm_sfr_total_component_fr")
223  self.label_41 = QtWidgets.QLabel(self.groupBox_c_ao_asm_sub_module_fr)
224  self.label_41.setGeometry(QtCore.QRect(10, 110, 161, 31))
225  self.label_41.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
226  self.label_41.setObjectName("label_41")
227  self.groupBox_c_ao_asm_default_fr = QtWidgets.QGroupBox(self.tab_5)
228  self.groupBox_c_ao_asm_default_fr.setGeometry(QtCore.QRect(50, 310, 351, 301))
229  font = QtGui.QFont()
230  font.setBold(False)
231  font.setItalic(False)
232  font.setUnderline(False)
233  font.setWeight(50)
234  font.setStrikeOut(False)
235  font.setKerning(True)
236  font.setStyleStrategy(QtGui.QFont.PreferAntialias)
237  self.groupBox_c_ao_asm_default_fr.setFont(font)
238  self.groupBox_c_ao_asm_default_fr.setFocusPolicy(QtCore.Qt.NoFocus)
239  self.groupBox_c_ao_asm_default_fr.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
240  self.groupBox_c_ao_asm_default_fr.setAlignment(QtCore.Qt.AlignCenter)
241  self.groupBox_c_ao_asm_default_fr.setFlat(False)
242  self.groupBox_c_ao_asm_default_fr.setCheckable(True)
243  self.groupBox_c_ao_asm_default_fr.setChecked(False)
244  self.groupBox_c_ao_asm_default_fr.setObjectName("groupBox_c_ao_asm_default_fr")
245  self.label_19 = QtWidgets.QLabel(self.groupBox_c_ao_asm_default_fr)
246  self.label_19.setGeometry(QtCore.QRect(10, 30, 161, 21))
247  self.label_19.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
248  self.label_19.setObjectName("label_19")
250  self.comboBox_c_ao_asm_select_equipment.setGeometry(QtCore.QRect(180, 30, 160, 27))
251  self.comboBox_c_ao_asm_select_equipment.setObjectName("comboBox_c_ao_asm_select_equipment")
252  self.label_20 = QtWidgets.QLabel(self.groupBox_c_ao_asm_default_fr)
253  self.label_20.setGeometry(QtCore.QRect(10, 150, 161, 31))
254  self.label_20.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
255  self.label_20.setObjectName("label_20")
257  self.comboBox_c_ao_asm_select_type.setGeometry(QtCore.QRect(180, 150, 160, 27))
258  self.comboBox_c_ao_asm_select_type.setObjectName("comboBox_c_ao_asm_select_type")
260  self.lineEdit_c_ao_asm_component_fr.setGeometry(QtCore.QRect(180, 70, 160, 27))
261  self.lineEdit_c_ao_asm_component_fr.setReadOnly(True)
262  self.lineEdit_c_ao_asm_component_fr.setObjectName("lineEdit_c_ao_asm_component_fr")
263  self.label_21 = QtWidgets.QLabel(self.groupBox_c_ao_asm_default_fr)
264  self.label_21.setGeometry(QtCore.QRect(-10, 190, 181, 21))
265  self.label_21.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
266  self.label_21.setObjectName("label_21")
267  self.label_30 = QtWidgets.QLabel(self.groupBox_c_ao_asm_default_fr)
268  self.label_30.setGeometry(QtCore.QRect(10, 110, 161, 31))
269  self.label_30.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
270  self.label_30.setObjectName("label_30")
272  self.spinBox_c_ao_asm_quantity.setGeometry(QtCore.QRect(180, 110, 160, 27))
273  self.spinBox_c_ao_asm_quantity.setMinimum(1)
274  self.spinBox_c_ao_asm_quantity.setMaximum(9999999)
275  self.spinBox_c_ao_asm_quantity.setObjectName("spinBox_c_ao_asm_quantity")
277  self.pushButton_c_ao_asm_set_equipment.setGeometry(QtCore.QRect(80, 240, 200, 50))
278  self.pushButton_c_ao_asm_set_equipment.setObjectName("pushButton_c_ao_asm_set_equipment")
280  self.lineEdit_c_ao_asm_total_component_fr.setGeometry(QtCore.QRect(180, 190, 160, 27))
281  self.lineEdit_c_ao_asm_total_component_fr.setReadOnly(True)
282  self.lineEdit_c_ao_asm_total_component_fr.setObjectName("lineEdit_c_ao_asm_total_component_fr")
283  self.label_33 = QtWidgets.QLabel(self.groupBox_c_ao_asm_default_fr)
284  self.label_33.setGeometry(QtCore.QRect(10, 70, 161, 31))
285  self.label_33.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
286  self.label_33.setWordWrap(True)
287  self.label_33.setObjectName("label_33")
288  self.groupBox_c_ao_asm_select_module = QtWidgets.QGroupBox(self.tab_5)
289  self.groupBox_c_ao_asm_select_module.setGeometry(QtCore.QRect(20, 20, 331, 51))
290  self.groupBox_c_ao_asm_select_module.setTitle("")
291  self.groupBox_c_ao_asm_select_module.setAlignment(QtCore.Qt.AlignCenter)
292  self.groupBox_c_ao_asm_select_module.setFlat(False)
293  self.groupBox_c_ao_asm_select_module.setCheckable(False)
294  self.groupBox_c_ao_asm_select_module.setObjectName("groupBox_c_ao_asm_select_module")
296  self.comboBox_c_ao_asm_select_module.setGeometry(QtCore.QRect(150, 10, 171, 27))
297  self.comboBox_c_ao_asm_select_module.setCurrentText("")
298  self.comboBox_c_ao_asm_select_module.setObjectName("comboBox_c_ao_asm_select_module")
299  self.label_28 = QtWidgets.QLabel(self.groupBox_c_ao_asm_select_module)
300  self.label_28.setGeometry(QtCore.QRect(0, 10, 141, 22))
301  self.label_28.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
302  self.label_28.setObjectName("label_28")
303  self.pushButton_c_ao_asm_add_sub_module = QtWidgets.QPushButton(self.tab_5)
304  self.pushButton_c_ao_asm_add_sub_module.setGeometry(QtCore.QRect(480, 590, 125, 50))
305  self.pushButton_c_ao_asm_add_sub_module.setObjectName("pushButton_c_ao_asm_add_sub_module")
306  self.groupBox_c_ao_asm_set_sub_module_name = QtWidgets.QGroupBox(self.tab_5)
307  self.groupBox_c_ao_asm_set_sub_module_name.setGeometry(QtCore.QRect(370, 10, 241, 60))
308  self.groupBox_c_ao_asm_set_sub_module_name.setTitle("")
309  self.groupBox_c_ao_asm_set_sub_module_name.setAlignment(QtCore.Qt.AlignCenter)
310  self.groupBox_c_ao_asm_set_sub_module_name.setFlat(False)
311  self.groupBox_c_ao_asm_set_sub_module_name.setCheckable(False)
312  self.groupBox_c_ao_asm_set_sub_module_name.setObjectName("groupBox_c_ao_asm_set_sub_module_name")
314  self.lineEdit_c_ao_asm_set_sub_module_name.setGeometry(QtCore.QRect(9, 20, 210, 27))
315  self.lineEdit_c_ao_asm_set_sub_module_name.setObjectName("lineEdit_c_ao_asm_set_sub_module_name")
316  self.label_29 = QtWidgets.QLabel(self.groupBox_c_ao_asm_set_sub_module_name)
317  self.label_29.setGeometry(QtCore.QRect(10, 0, 151, 22))
318  self.label_29.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
319  self.label_29.setObjectName("label_29")
320  self.groupBox_c_ao_asm_list_of_sub_modules = QtWidgets.QGroupBox(self.tab_5)
321  self.groupBox_c_ao_asm_list_of_sub_modules.setGeometry(QtCore.QRect(670, 10, 401, 291))
322  self.groupBox_c_ao_asm_list_of_sub_modules.setObjectName("groupBox_c_ao_asm_list_of_sub_modules")
324  self.listWidget_c_ao_asm_list_of_sub_modules.setGeometry(QtCore.QRect(0, 30, 400, 200))
325  self.listWidget_c_ao_asm_list_of_sub_modules.setObjectName("listWidget_c_ao_asm_list_of_sub_modules")
327  self.pushButton_c_ao_asm_delete_sub_module.setGeometry(QtCore.QRect(300, 240, 99, 27))
328  self.pushButton_c_ao_asm_delete_sub_module.setObjectName("pushButton_c_ao_asm_delete_sub_module")
329  self.line_3 = QtWidgets.QFrame(self.tab_5)
330  self.line_3.setGeometry(QtCore.QRect(630, 0, 16, 661))
331  self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
332  self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
333  self.line_3.setObjectName("line_3")
334  self.tabWidget.addTab(self.tab_5, "")
335  self.tab_4 = QtWidgets.QWidget()
336  self.tab_4.setObjectName("tab_4")
337  self.tabWidget_5 = QtWidgets.QTabWidget(self.tab_4)
338  self.tabWidget_5.setGeometry(QtCore.QRect(0, 0, 1100, 900))
339  self.tabWidget_5.setObjectName("tabWidget_5")
340  self.tab_10 = QtWidgets.QWidget()
341  self.tab_10.setObjectName("tab_10")
342  self.pushButton_c_ao_ac_add_component = QtWidgets.QPushButton(self.tab_10)
343  self.pushButton_c_ao_ac_add_component.setGeometry(QtCore.QRect(480, 560, 125, 50))
344  self.pushButton_c_ao_ac_add_component.setObjectName("pushButton_c_ao_ac_add_component")
345  self.groupBox_c_ao_ac_select_sub_module = QtWidgets.QGroupBox(self.tab_10)
346  self.groupBox_c_ao_ac_select_sub_module.setGeometry(QtCore.QRect(20, 20, 331, 81))
347  self.groupBox_c_ao_ac_select_sub_module.setTitle("")
348  self.groupBox_c_ao_ac_select_sub_module.setAlignment(QtCore.Qt.AlignCenter)
349  self.groupBox_c_ao_ac_select_sub_module.setFlat(False)
350  self.groupBox_c_ao_ac_select_sub_module.setCheckable(False)
351  self.groupBox_c_ao_ac_select_sub_module.setObjectName("groupBox_c_ao_ac_select_sub_module")
353  self.comboBox_c_ao_ac_select_sub_module.setGeometry(QtCore.QRect(160, 40, 171, 27))
354  self.comboBox_c_ao_ac_select_sub_module.setCurrentText("")
355  self.comboBox_c_ao_ac_select_sub_module.setObjectName("comboBox_c_ao_ac_select_sub_module")
357  self.comboBox_c_ao_ac_select_module.setGeometry(QtCore.QRect(160, 10, 171, 27))
358  self.comboBox_c_ao_ac_select_module.setCurrentText("")
359  self.comboBox_c_ao_ac_select_module.setObjectName("comboBox_c_ao_ac_select_module")
360  self.label_9 = QtWidgets.QLabel(self.groupBox_c_ao_ac_select_sub_module)
361  self.label_9.setGeometry(QtCore.QRect(10, 10, 141, 22))
362  self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
363  self.label_9.setObjectName("label_9")
364  self.label_14 = QtWidgets.QLabel(self.groupBox_c_ao_ac_select_sub_module)
365  self.label_14.setGeometry(QtCore.QRect(0, 40, 151, 22))
366  self.label_14.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
367  self.label_14.setObjectName("label_14")
368  self.groupBox_c_ao_ac_list_of_components = QtWidgets.QGroupBox(self.tab_10)
369  self.groupBox_c_ao_ac_list_of_components.setGeometry(QtCore.QRect(670, 10, 401, 291))
370  self.groupBox_c_ao_ac_list_of_components.setObjectName("groupBox_c_ao_ac_list_of_components")
372  self.listWidget_c_ao_ac_list_of_components.setGeometry(QtCore.QRect(0, 30, 400, 200))
373  self.listWidget_c_ao_ac_list_of_components.setObjectName("listWidget_c_ao_ac_list_of_components")
375  self.pushButton_c_ao_ac_delete_component.setGeometry(QtCore.QRect(300, 240, 99, 27))
376  self.pushButton_c_ao_ac_delete_component.setObjectName("pushButton_c_ao_ac_delete_component")
377  self.groupBox_c_ao_ac_default_fr = QtWidgets.QGroupBox(self.tab_10)
378  self.groupBox_c_ao_ac_default_fr.setGeometry(QtCore.QRect(50, 310, 341, 251))
379  font = QtGui.QFont()
380  font.setBold(False)
381  font.setItalic(False)
382  font.setUnderline(False)
383  font.setWeight(50)
384  font.setStrikeOut(False)
385  font.setKerning(True)
386  font.setStyleStrategy(QtGui.QFont.PreferAntialias)
387  self.groupBox_c_ao_ac_default_fr.setFont(font)
388  self.groupBox_c_ao_ac_default_fr.setFocusPolicy(QtCore.Qt.NoFocus)
389  self.groupBox_c_ao_ac_default_fr.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
390  self.groupBox_c_ao_ac_default_fr.setAlignment(QtCore.Qt.AlignCenter)
391  self.groupBox_c_ao_ac_default_fr.setFlat(False)
392  self.groupBox_c_ao_ac_default_fr.setCheckable(True)
393  self.groupBox_c_ao_ac_default_fr.setChecked(False)
394  self.groupBox_c_ao_ac_default_fr.setObjectName("groupBox_c_ao_ac_default_fr")
395  self.label_7 = QtWidgets.QLabel(self.groupBox_c_ao_ac_default_fr)
396  self.label_7.setGeometry(QtCore.QRect(10, 30, 161, 21))
397  self.label_7.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
398  self.label_7.setObjectName("label_7")
400  self.comboBox_c_ao_ac_select_equipment.setGeometry(QtCore.QRect(180, 30, 160, 27))
401  self.comboBox_c_ao_ac_select_equipment.setObjectName("comboBox_c_ao_ac_select_equipment")
402  self.label_8 = QtWidgets.QLabel(self.groupBox_c_ao_ac_default_fr)
403  self.label_8.setGeometry(QtCore.QRect(10, 110, 161, 31))
404  self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
405  self.label_8.setObjectName("label_8")
407  self.lineEdit_c_ao_ac_component_fr_2.setGeometry(QtCore.QRect(180, 70, 160, 27))
408  self.lineEdit_c_ao_ac_component_fr_2.setReadOnly(True)
409  self.lineEdit_c_ao_ac_component_fr_2.setObjectName("lineEdit_c_ao_ac_component_fr_2")
410  self.label_11 = QtWidgets.QLabel(self.groupBox_c_ao_ac_default_fr)
411  self.label_11.setGeometry(QtCore.QRect(-10, 70, 181, 21))
412  self.label_11.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
413  self.label_11.setObjectName("label_11")
415  self.spinBox_c_ao_ac_quantity.setGeometry(QtCore.QRect(180, 110, 160, 27))
416  self.spinBox_c_ao_ac_quantity.setMinimum(1)
417  self.spinBox_c_ao_ac_quantity.setMaximum(9999999)
418  self.spinBox_c_ao_ac_quantity.setObjectName("spinBox_c_ao_ac_quantity")
420  self.pushButton_c_ao_ac_set_equipment.setGeometry(QtCore.QRect(80, 190, 200, 50))
421  self.pushButton_c_ao_ac_set_equipment.setObjectName("pushButton_c_ao_ac_set_equipment")
423  self.lineEdit_c_ao_ac_total_component_fr.setGeometry(QtCore.QRect(180, 150, 160, 27))
424  self.lineEdit_c_ao_ac_total_component_fr.setReadOnly(True)
425  self.lineEdit_c_ao_ac_total_component_fr.setObjectName("lineEdit_c_ao_ac_total_component_fr")
426  self.label_34 = QtWidgets.QLabel(self.groupBox_c_ao_ac_default_fr)
427  self.label_34.setGeometry(QtCore.QRect(-10, 150, 181, 21))
428  self.label_34.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
429  self.label_34.setObjectName("label_34")
430  self.groupBox_c_ao_ac_set_component_name = QtWidgets.QGroupBox(self.tab_10)
431  self.groupBox_c_ao_ac_set_component_name.setGeometry(QtCore.QRect(400, 20, 221, 60))
432  self.groupBox_c_ao_ac_set_component_name.setTitle("")
433  self.groupBox_c_ao_ac_set_component_name.setAlignment(QtCore.Qt.AlignCenter)
434  self.groupBox_c_ao_ac_set_component_name.setFlat(False)
435  self.groupBox_c_ao_ac_set_component_name.setCheckable(False)
436  self.groupBox_c_ao_ac_set_component_name.setObjectName("groupBox_c_ao_ac_set_component_name")
438  self.lineEdit_c_ao_ac_set_component_name.setGeometry(QtCore.QRect(0, 20, 210, 27))
439  self.lineEdit_c_ao_ac_set_component_name.setObjectName("lineEdit_c_ao_ac_set_component_name")
440  self.label_17 = QtWidgets.QLabel(self.groupBox_c_ao_ac_set_component_name)
441  self.label_17.setGeometry(QtCore.QRect(0, 0, 151, 22))
442  self.label_17.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
443  self.label_17.setObjectName("label_17")
444  self.groupBox_c_ao_ac_component_fr = QtWidgets.QGroupBox(self.tab_10)
445  self.groupBox_c_ao_ac_component_fr.setGeometry(QtCore.QRect(50, 120, 351, 141))
446  self.groupBox_c_ao_ac_component_fr.setAlignment(QtCore.Qt.AlignCenter)
447  self.groupBox_c_ao_ac_component_fr.setFlat(False)
448  self.groupBox_c_ao_ac_component_fr.setCheckable(True)
449  self.groupBox_c_ao_ac_component_fr.setChecked(False)
450  self.groupBox_c_ao_ac_component_fr.setObjectName("groupBox_c_ao_ac_component_fr")
452  self.lineEdit_c_ao_ac_component_fr.setGeometry(QtCore.QRect(180, 30, 160, 27))
453  self.lineEdit_c_ao_ac_component_fr.setObjectName("lineEdit_c_ao_ac_component_fr")
454  self.label_10 = QtWidgets.QLabel(self.groupBox_c_ao_ac_component_fr)
455  self.label_10.setGeometry(QtCore.QRect(0, 35, 171, 21))
456  self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
457  self.label_10.setObjectName("label_10")
458  self.label_31 = QtWidgets.QLabel(self.groupBox_c_ao_ac_component_fr)
459  self.label_31.setGeometry(QtCore.QRect(10, 70, 161, 31))
460  self.label_31.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
461  self.label_31.setObjectName("label_31")
463  self.spinBox_c_ao_ac_sfr_quantity.setGeometry(QtCore.QRect(180, 70, 160, 27))
464  self.spinBox_c_ao_ac_sfr_quantity.setMinimum(1)
465  self.spinBox_c_ao_ac_sfr_quantity.setMaximum(9999999)
466  self.spinBox_c_ao_ac_sfr_quantity.setObjectName("spinBox_c_ao_ac_sfr_quantity")
468  self.lineEdit_c_ao_ac_sfr_total_component_fr.setGeometry(QtCore.QRect(180, 110, 160, 27))
469  self.lineEdit_c_ao_ac_sfr_total_component_fr.setReadOnly(True)
470  self.lineEdit_c_ao_ac_sfr_total_component_fr.setObjectName("lineEdit_c_ao_ac_sfr_total_component_fr")
471  self.label_35 = QtWidgets.QLabel(self.groupBox_c_ao_ac_component_fr)
472  self.label_35.setGeometry(QtCore.QRect(-10, 110, 181, 21))
473  self.label_35.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
474  self.label_35.setObjectName("label_35")
475  self.line = QtWidgets.QFrame(self.tab_10)
476  self.line.setGeometry(QtCore.QRect(630, 0, 16, 631))
477  self.line.setFrameShape(QtWidgets.QFrame.VLine)
478  self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
479  self.line.setObjectName("line")
480  self.tabWidget_5.addTab(self.tab_10, "")
481  self.tab_11 = QtWidgets.QWidget()
482  self.tab_11.setObjectName("tab_11")
483  self.groupBox_c_ao_ace_select_module = QtWidgets.QGroupBox(self.tab_11)
484  self.groupBox_c_ao_ace_select_module.setGeometry(QtCore.QRect(10, 20, 341, 111))
485  self.groupBox_c_ao_ace_select_module.setTitle("")
486  self.groupBox_c_ao_ace_select_module.setAlignment(QtCore.Qt.AlignCenter)
487  self.groupBox_c_ao_ace_select_module.setFlat(False)
488  self.groupBox_c_ao_ace_select_module.setCheckable(False)
489  self.groupBox_c_ao_ace_select_module.setObjectName("groupBox_c_ao_ace_select_module")
491  self.comboBox_c_ao_ace_select_module.setGeometry(QtCore.QRect(170, 10, 171, 27))
492  self.comboBox_c_ao_ace_select_module.setCurrentText("")
493  self.comboBox_c_ao_ace_select_module.setObjectName("comboBox_c_ao_ace_select_module")
494  self.label = QtWidgets.QLabel(self.groupBox_c_ao_ace_select_module)
495  self.label.setGeometry(QtCore.QRect(20, 10, 141, 22))
496  self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
497  self.label.setObjectName("label")
499  self.comboBox_c_ao_ace_select_sub_module.setGeometry(QtCore.QRect(170, 40, 171, 27))
500  self.comboBox_c_ao_ace_select_sub_module.setCurrentText("")
501  self.comboBox_c_ao_ace_select_sub_module.setObjectName("comboBox_c_ao_ace_select_sub_module")
502  self.label_2 = QtWidgets.QLabel(self.groupBox_c_ao_ace_select_module)
503  self.label_2.setGeometry(QtCore.QRect(10, 40, 151, 22))
504  self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
505  self.label_2.setObjectName("label_2")
506  self.groupBox_c_ao_ace_set_element_name = QtWidgets.QGroupBox(self.tab_11)
507  self.groupBox_c_ao_ace_set_element_name.setGeometry(QtCore.QRect(390, 20, 241, 321))
508  font = QtGui.QFont()
509  font.setBold(False)
510  font.setWeight(50)
511  self.groupBox_c_ao_ace_set_element_name.setFont(font)
512  self.groupBox_c_ao_ace_set_element_name.setTitle("")
513  self.groupBox_c_ao_ace_set_element_name.setAlignment(QtCore.Qt.AlignCenter)
514  self.groupBox_c_ao_ace_set_element_name.setFlat(False)
515  self.groupBox_c_ao_ace_set_element_name.setCheckable(False)
516  self.groupBox_c_ao_ace_set_element_name.setObjectName("groupBox_c_ao_ace_set_element_name")
518  self.lineEdit_c_ao_ace_set_element_name.setGeometry(QtCore.QRect(10, 80, 190, 27))
519  self.lineEdit_c_ao_ace_set_element_name.setObjectName("lineEdit_c_ao_ace_set_element_name")
520  self.label_4 = QtWidgets.QLabel(self.groupBox_c_ao_ace_set_element_name)
521  self.label_4.setGeometry(QtCore.QRect(10, 60, 141, 22))
522  self.label_4.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
523  self.label_4.setObjectName("label_4")
525  self.lineEdit_c_ao_ace_set_element_variable_name.setGeometry(QtCore.QRect(10, 140, 190, 27))
526  self.lineEdit_c_ao_ace_set_element_variable_name.setObjectName("lineEdit_c_ao_ace_set_element_variable_name")
527  self.label_5 = QtWidgets.QLabel(self.groupBox_c_ao_ace_set_element_name)
528  self.label_5.setGeometry(QtCore.QRect(10, 120, 231, 22))
529  self.label_5.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
530  self.label_5.setObjectName("label_5")
532  self.pushButton_c_ao_ace_add_component_element.setGeometry(QtCore.QRect(40, 250, 125, 50))
533  self.pushButton_c_ao_ace_add_component_element.setObjectName("pushButton_c_ao_ace_add_component_element")
535  self.groupBox_c_ao_ace_set_element_value.setGeometry(QtCore.QRect(0, 180, 211, 60))
536  self.groupBox_c_ao_ace_set_element_value.setAlignment(QtCore.Qt.AlignCenter)
537  self.groupBox_c_ao_ace_set_element_value.setFlat(False)
538  self.groupBox_c_ao_ace_set_element_value.setCheckable(False)
539  self.groupBox_c_ao_ace_set_element_value.setChecked(False)
540  self.groupBox_c_ao_ace_set_element_value.setObjectName("groupBox_c_ao_ace_set_element_value")
542  self.lineEdit_c_ao_ace_set_element_value.setEnabled(True)
543  self.lineEdit_c_ao_ace_set_element_value.setGeometry(QtCore.QRect(10, 30, 190, 27))
544  self.lineEdit_c_ao_ace_set_element_value.setObjectName("lineEdit_c_ao_ace_set_element_value")
545  self.label_32 = QtWidgets.QLabel(self.groupBox_c_ao_ace_set_element_name)
546  self.label_32.setGeometry(QtCore.QRect(10, 0, 151, 22))
547  self.label_32.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
548  self.label_32.setObjectName("label_32")
550  self.lineEdit_c_ao_ace_set_component_name.setGeometry(QtCore.QRect(10, 20, 190, 27))
551  self.lineEdit_c_ao_ace_set_component_name.setObjectName("lineEdit_c_ao_ace_set_component_name")
552  self.groupBox_c_ao_ace_list_of_elements = QtWidgets.QGroupBox(self.tab_11)
553  self.groupBox_c_ao_ace_list_of_elements.setGeometry(QtCore.QRect(670, 70, 411, 291))
554  self.groupBox_c_ao_ace_list_of_elements.setObjectName("groupBox_c_ao_ace_list_of_elements")
556  self.listWidget_c_ao_ace_list_of_elements.setGeometry(QtCore.QRect(0, 30, 400, 200))
557  self.listWidget_c_ao_ace_list_of_elements.setObjectName("listWidget_c_ao_ace_list_of_elements")
559  self.pushButton_c_ao_ace_delete_element.setGeometry(QtCore.QRect(300, 240, 99, 27))
560  self.pushButton_c_ao_ace_delete_element.setObjectName("pushButton_c_ao_ace_delete_element")
561  self.line_2 = QtWidgets.QFrame(self.tab_11)
562  self.line_2.setGeometry(QtCore.QRect(630, 0, 16, 631))
563  self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
564  self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
565  self.line_2.setObjectName("line_2")
566  self.comboBox_c_ao_ace_select_component = QtWidgets.QComboBox(self.tab_11)
567  self.comboBox_c_ao_ace_select_component.setGeometry(QtCore.QRect(810, 30, 171, 27))
568  self.comboBox_c_ao_ace_select_component.setCurrentText("")
569  self.comboBox_c_ao_ace_select_component.setObjectName("comboBox_c_ao_ace_select_component")
570  self.label_3 = QtWidgets.QLabel(self.tab_11)
571  self.label_3.setGeometry(QtCore.QRect(660, 30, 141, 22))
572  self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
573  self.label_3.setObjectName("label_3")
574  self.line_5 = QtWidgets.QFrame(self.tab_11)
575  self.line_5.setGeometry(QtCore.QRect(10, 370, 621, 16))
576  self.line_5.setFrameShape(QtWidgets.QFrame.HLine)
577  self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
578  self.line_5.setObjectName("line_5")
579  self.groupBox_c_ao_ac_set_formula = QtWidgets.QGroupBox(self.tab_11)
580  self.groupBox_c_ao_ac_set_formula.setGeometry(QtCore.QRect(20, 380, 611, 201))
581  self.groupBox_c_ao_ac_set_formula.setTitle("")
582  self.groupBox_c_ao_ac_set_formula.setObjectName("groupBox_c_ao_ac_set_formula")
584  self.pushButton_c_ao_ac_set_formula.setGeometry(QtCore.QRect(140, 130, 150, 50))
585  self.pushButton_c_ao_ac_set_formula.setObjectName("pushButton_c_ao_ac_set_formula")
587  self.plainTextEdit_c_ao_ac_set_formula.setGeometry(QtCore.QRect(10, 90, 421, 31))
588  self.plainTextEdit_c_ao_ac_set_formula.setPlainText("")
589  self.plainTextEdit_c_ao_ac_set_formula.setObjectName("plainTextEdit_c_ao_ac_set_formula")
590  self.label_15 = QtWidgets.QLabel(self.groupBox_c_ao_ac_set_formula)
591  self.label_15.setGeometry(QtCore.QRect(10, 60, 231, 22))
592  self.label_15.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
593  self.label_15.setObjectName("label_15")
595  self.lineEdit_c_ao_ace_component_fr.setGeometry(QtCore.QRect(450, 90, 150, 31))
596  self.lineEdit_c_ao_ace_component_fr.setReadOnly(True)
597  self.lineEdit_c_ao_ace_component_fr.setObjectName("lineEdit_c_ao_ace_component_fr")
598  self.label_16 = QtWidgets.QLabel(self.groupBox_c_ao_ac_set_formula)
599  self.label_16.setGeometry(QtCore.QRect(450, 60, 141, 22))
600  self.label_16.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
601  self.label_16.setObjectName("label_16")
603  self.comboBox_c_ao_ace_select_component_2.setGeometry(QtCore.QRect(150, 30, 171, 27))
604  self.comboBox_c_ao_ace_select_component_2.setCurrentText("")
605  self.comboBox_c_ao_ace_select_component_2.setObjectName("comboBox_c_ao_ace_select_component_2")
606  self.label_6 = QtWidgets.QLabel(self.groupBox_c_ao_ac_set_formula)
607  self.label_6.setGeometry(QtCore.QRect(0, 30, 141, 22))
608  self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
609  self.label_6.setObjectName("label_6")
610  self.tabWidget_5.addTab(self.tab_11, "")
611  self.tabWidget.addTab(self.tab_4, "")
612  self.tabWidget_configuration.addTab(self.tab_add_object, "")
613  self.tab_set_type = QtWidgets.QWidget()
614  self.tab_set_type.setObjectName("tab_set_type")
615  self.tabWidget_types = QtWidgets.QTabWidget(self.tab_set_type)
616  self.tabWidget_types.setGeometry(QtCore.QRect(0, 0, 1100, 700))
617  self.tabWidget_types.setFocusPolicy(QtCore.Qt.TabFocus)
618  self.tabWidget_types.setObjectName("tabWidget_types")
619  self.tab = QtWidgets.QWidget()
620  self.tab.setObjectName("tab")
621  self.label_configurations_4 = QtWidgets.QLabel(self.tab)
622  self.label_configurations_4.setGeometry(QtCore.QRect(500, 240, 111, 17))
623  self.label_configurations_4.setObjectName("label_configurations_4")
624  self.label_configuration_select_first_comp = QtWidgets.QLabel(self.tab)
625  self.label_configuration_select_first_comp.setGeometry(QtCore.QRect(490, 20, 171, 17))
626  self.label_configuration_select_first_comp.setObjectName("label_configuration_select_first_comp")
627  self.groupBox_result = QtWidgets.QGroupBox(self.tab)
628  self.groupBox_result.setGeometry(QtCore.QRect(210, 340, 450, 80))
629  self.groupBox_result.setTitle("")
630  self.groupBox_result.setObjectName("groupBox_result")
631  self.comboBox_configuration_select_second_comp = QtWidgets.QComboBox(self.tab)
632  self.comboBox_configuration_select_second_comp.setGeometry(QtCore.QRect(780, 40, 161, 27))
633  self.comboBox_configuration_select_second_comp.setObjectName("comboBox_configuration_select_second_comp")
634  self.line_22 = QtWidgets.QFrame(self.tab)
635  self.line_22.setGeometry(QtCore.QRect(360, 20, 20, 191))
636  self.line_22.setFrameShape(QtWidgets.QFrame.VLine)
637  self.line_22.setFrameShadow(QtWidgets.QFrame.Sunken)
638  self.line_22.setObjectName("line_22")
639  self.label_configuration_sub_module_list_3 = QtWidgets.QLabel(self.tab)
640  self.label_configuration_sub_module_list_3.setGeometry(QtCore.QRect(70, 30, 111, 20))
641  self.label_configuration_sub_module_list_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
642  self.label_configuration_sub_module_list_3.setObjectName("label_configuration_sub_module_list_3")
643  self.groupBox_set_types_4 = QtWidgets.QGroupBox(self.tab)
644  self.groupBox_set_types_4.setGeometry(QtCore.QRect(470, 110, 591, 41))
645  self.groupBox_set_types_4.setTitle("")
646  self.groupBox_set_types_4.setObjectName("groupBox_set_types_4")
648  self.pushButton_configuration_set_comp_type.setGeometry(QtCore.QRect(480, 10, 99, 27))
649  self.pushButton_configuration_set_comp_type.setObjectName("pushButton_configuration_set_comp_type")
650  self.label_24 = QtWidgets.QLabel(self.groupBox_set_types_4)
651  self.label_24.setGeometry(QtCore.QRect(187, 10, 16, 31))
652  font = QtGui.QFont()
653  font.setItalic(True)
654  self.label_24.setFont(font)
655  self.label_24.setObjectName("label_24")
656  self.label_25 = QtWidgets.QLabel(self.groupBox_set_types_4)
657  self.label_25.setGeometry(QtCore.QRect(290, 10, 16, 31))
658  font = QtGui.QFont()
659  font.setItalic(True)
660  self.label_25.setFont(font)
661  self.label_25.setObjectName("label_25")
663  self.lineEdit_configuration_second_component.setGeometry(QtCore.QRect(310, 10, 160, 27))
664  self.lineEdit_configuration_second_component.setReadOnly(True)
665  self.lineEdit_configuration_second_component.setObjectName("lineEdit_configuration_second_component")
667  self.comboBox_configuration_type_of_component.setGeometry(QtCore.QRect(205, 10, 80, 27))
668  self.comboBox_configuration_type_of_component.setObjectName("comboBox_configuration_type_of_component")
670  self.lineEdit_configuration_first_component.setGeometry(QtCore.QRect(20, 10, 160, 27))
671  self.lineEdit_configuration_first_component.setReadOnly(True)
672  self.lineEdit_configuration_first_component.setObjectName("lineEdit_configuration_first_component")
673  self.pushButton_delete_component_config = QtWidgets.QPushButton(self.tab)
674  self.pushButton_delete_component_config.setGeometry(QtCore.QRect(800, 300, 101, 27))
675  self.pushButton_delete_component_config.setAutoDefault(False)
676  self.pushButton_delete_component_config.setDefault(False)
677  self.pushButton_delete_component_config.setFlat(False)
678  self.pushButton_delete_component_config.setObjectName("pushButton_delete_component_config")
679  self.lineEdit_configuration_failure_rate_sub_module = QtWidgets.QLineEdit(self.tab)
680  self.lineEdit_configuration_failure_rate_sub_module.setGeometry(QtCore.QRect(190, 119, 160, 27))
681  self.lineEdit_configuration_failure_rate_sub_module.setReadOnly(True)
682  self.lineEdit_configuration_failure_rate_sub_module.setObjectName("lineEdit_configuration_failure_rate_sub_module")
683  self.listWidget_configurations_of_components = QtWidgets.QListWidget(self.tab)
684  self.listWidget_configurations_of_components.setGeometry(QtCore.QRect(340, 260, 440, 371))
685  self.listWidget_configurations_of_components.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
686  self.listWidget_configurations_of_components.setObjectName("listWidget_configurations_of_components")
687  self.pushButton_add_component_config = QtWidgets.QPushButton(self.tab)
688  self.pushButton_add_component_config.setGeometry(QtCore.QRect(800, 260, 99, 27))
689  self.pushButton_add_component_config.setObjectName("pushButton_add_component_config")
690  self.label_configuration_select_second_comp = QtWidgets.QLabel(self.tab)
691  self.label_configuration_select_second_comp.setGeometry(QtCore.QRect(780, 20, 191, 17))
692  self.label_configuration_select_second_comp.setObjectName("label_configuration_select_second_comp")
693  self.comboBox_configuration_select_first_comp = QtWidgets.QComboBox(self.tab)
694  self.comboBox_configuration_select_first_comp.setGeometry(QtCore.QRect(490, 40, 161, 27))
695  self.comboBox_configuration_select_first_comp.setObjectName("comboBox_configuration_select_first_comp")
696  self.pushButton_select_final_configuration_of_sub_module = QtWidgets.QPushButton(self.tab)
697  self.pushButton_select_final_configuration_of_sub_module.setGeometry(QtCore.QRect(800, 600, 201, 27))
698  self.pushButton_select_final_configuration_of_sub_module.setObjectName("pushButton_select_final_configuration_of_sub_module")
700  self.lineEdit_configuration_failure_rate_first_component.setGeometry(QtCore.QRect(490, 70, 160, 27))
701  self.lineEdit_configuration_failure_rate_first_component.setReadOnly(True)
702  self.lineEdit_configuration_failure_rate_first_component.setObjectName("lineEdit_configuration_failure_rate_first_component")
703  self.label_configuration_failure_rate_7 = QtWidgets.QLabel(self.tab)
704  self.label_configuration_failure_rate_7.setGeometry(QtCore.QRect(400, 70, 91, 20))
705  self.label_configuration_failure_rate_7.setObjectName("label_configuration_failure_rate_7")
706  self.label_configuration_sub_module_list_2 = QtWidgets.QLabel(self.tab)
707  self.label_configuration_sub_module_list_2.setGeometry(QtCore.QRect(70, 59, 111, 20))
708  self.label_configuration_sub_module_list_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
709  self.label_configuration_sub_module_list_2.setObjectName("label_configuration_sub_module_list_2")
710  self.listWidget_components = QtWidgets.QListWidget(self.tab)
711  self.listWidget_components.setGeometry(QtCore.QRect(50, 260, 256, 371))
712  self.listWidget_components.setObjectName("listWidget_components")
713  self.label_configuration_sub_module_list = QtWidgets.QLabel(self.tab)
714  self.label_configuration_sub_module_list.setGeometry(QtCore.QRect(50, 89, 131, 20))
715  self.label_configuration_sub_module_list.setObjectName("label_configuration_sub_module_list")
716  self.comboBox_configuration_st_sc_select_system = QtWidgets.QComboBox(self.tab)
717  self.comboBox_configuration_st_sc_select_system.setGeometry(QtCore.QRect(190, 30, 161, 27))
718  self.comboBox_configuration_st_sc_select_system.setObjectName("comboBox_configuration_st_sc_select_system")
719  self.label_components = QtWidgets.QLabel(self.tab)
720  self.label_components.setGeometry(QtCore.QRect(120, 240, 91, 17))
721  self.label_components.setObjectName("label_components")
722  self.comboBox_configuration_st_sc_select_sub_module = QtWidgets.QComboBox(self.tab)
723  self.comboBox_configuration_st_sc_select_sub_module.setGeometry(QtCore.QRect(190, 89, 161, 27))
724  self.comboBox_configuration_st_sc_select_sub_module.setObjectName("comboBox_configuration_st_sc_select_sub_module")
725  self.comboBox_configuration_st_sc_select_module = QtWidgets.QComboBox(self.tab)
726  self.comboBox_configuration_st_sc_select_module.setGeometry(QtCore.QRect(190, 59, 161, 27))
727  self.comboBox_configuration_st_sc_select_module.setObjectName("comboBox_configuration_st_sc_select_module")
728  self.label_configuration_failure_rate_8 = QtWidgets.QLabel(self.tab)
729  self.label_configuration_failure_rate_8.setGeometry(QtCore.QRect(20, 120, 171, 20))
730  self.label_configuration_failure_rate_8.setObjectName("label_configuration_failure_rate_8")
732  self.lineEdit_configuration_failure_rate_second_component.setGeometry(QtCore.QRect(780, 70, 160, 27))
733  self.lineEdit_configuration_failure_rate_second_component.setReadOnly(True)
734  self.lineEdit_configuration_failure_rate_second_component.setObjectName("lineEdit_configuration_failure_rate_second_component")
735  self.tabWidget_types.addTab(self.tab, "")
736  self.tab_2 = QtWidgets.QWidget()
737  self.tab_2.setObjectName("tab_2")
738  self.pushButton_delete_sub_module_config = QtWidgets.QPushButton(self.tab_2)
739  self.pushButton_delete_sub_module_config.setGeometry(QtCore.QRect(800, 300, 101, 27))
740  self.pushButton_delete_sub_module_config.setAutoDefault(False)
741  self.pushButton_delete_sub_module_config.setDefault(False)
742  self.pushButton_delete_sub_module_config.setFlat(False)
743  self.pushButton_delete_sub_module_config.setObjectName("pushButton_delete_sub_module_config")
744  self.pushButton_add_sub_module_config = QtWidgets.QPushButton(self.tab_2)
745  self.pushButton_add_sub_module_config.setGeometry(QtCore.QRect(800, 260, 99, 27))
746  self.pushButton_add_sub_module_config.setObjectName("pushButton_add_sub_module_config")
747  self.lineEdit_configuration_failure_rate_module = QtWidgets.QLineEdit(self.tab_2)
748  self.lineEdit_configuration_failure_rate_module.setGeometry(QtCore.QRect(190, 89, 160, 27))
749  self.lineEdit_configuration_failure_rate_module.setReadOnly(True)
750  self.lineEdit_configuration_failure_rate_module.setObjectName("lineEdit_configuration_failure_rate_module")
752  self.lineEdit_configuration_failure_rate_second_sub_module.setGeometry(QtCore.QRect(780, 70, 160, 27))
753  self.lineEdit_configuration_failure_rate_second_sub_module.setReadOnly(True)
754  self.lineEdit_configuration_failure_rate_second_sub_module.setObjectName("lineEdit_configuration_failure_rate_second_sub_module")
755  self.groupBox_set_types_5 = QtWidgets.QGroupBox(self.tab_2)
756  self.groupBox_set_types_5.setGeometry(QtCore.QRect(480, 110, 591, 41))
757  self.groupBox_set_types_5.setTitle("")
758  self.groupBox_set_types_5.setObjectName("groupBox_set_types_5")
760  self.pushButton_configuration_set_sub_module_type.setGeometry(QtCore.QRect(470, 10, 99, 27))
761  self.pushButton_configuration_set_sub_module_type.setObjectName("pushButton_configuration_set_sub_module_type")
762  self.label_26 = QtWidgets.QLabel(self.groupBox_set_types_5)
763  self.label_26.setGeometry(QtCore.QRect(177, 10, 16, 31))
764  font = QtGui.QFont()
765  font.setItalic(True)
766  self.label_26.setFont(font)
767  self.label_26.setObjectName("label_26")
768  self.label_27 = QtWidgets.QLabel(self.groupBox_set_types_5)
769  self.label_27.setGeometry(QtCore.QRect(280, 10, 16, 31))
770  font = QtGui.QFont()
771  font.setItalic(True)
772  self.label_27.setFont(font)
773  self.label_27.setObjectName("label_27")
775  self.lineEdit_configuration_second_sub_module.setGeometry(QtCore.QRect(300, 10, 160, 27))
776  self.lineEdit_configuration_second_sub_module.setReadOnly(True)
777  self.lineEdit_configuration_second_sub_module.setObjectName("lineEdit_configuration_second_sub_module")
779  self.comboBox_configuration_type_of_sub_module.setGeometry(QtCore.QRect(195, 10, 80, 27))
780  self.comboBox_configuration_type_of_sub_module.setObjectName("comboBox_configuration_type_of_sub_module")
782  self.lineEdit_configuration_first_sub_module.setGeometry(QtCore.QRect(10, 10, 160, 27))
783  self.lineEdit_configuration_first_sub_module.setReadOnly(True)
784  self.lineEdit_configuration_first_sub_module.setObjectName("lineEdit_configuration_first_sub_module")
785  self.comboBox_configuration_st_ssm_select_module = QtWidgets.QComboBox(self.tab_2)
786  self.comboBox_configuration_st_ssm_select_module.setGeometry(QtCore.QRect(190, 59, 161, 27))
787  self.comboBox_configuration_st_ssm_select_module.setObjectName("comboBox_configuration_st_ssm_select_module")
788  self.label_configuration_failure_rate_9 = QtWidgets.QLabel(self.tab_2)
789  self.label_configuration_failure_rate_9.setGeometry(QtCore.QRect(50, 90, 141, 20))
790  self.label_configuration_failure_rate_9.setObjectName("label_configuration_failure_rate_9")
791  self.comboBox_configuration_select_first_sub_module = QtWidgets.QComboBox(self.tab_2)
792  self.comboBox_configuration_select_first_sub_module.setGeometry(QtCore.QRect(490, 40, 161, 27))
793  self.comboBox_configuration_select_first_sub_module.setObjectName("comboBox_configuration_select_first_sub_module")
794  self.comboBox_configuration_st_ssm_select_system = QtWidgets.QComboBox(self.tab_2)
795  self.comboBox_configuration_st_ssm_select_system.setGeometry(QtCore.QRect(190, 30, 161, 27))
796  self.comboBox_configuration_st_ssm_select_system.setObjectName("comboBox_configuration_st_ssm_select_system")
798  self.lineEdit_configuration_failure_rate_first_sub_module.setGeometry(QtCore.QRect(490, 70, 160, 27))
799  self.lineEdit_configuration_failure_rate_first_sub_module.setReadOnly(True)
800  self.lineEdit_configuration_failure_rate_first_sub_module.setObjectName("lineEdit_configuration_failure_rate_first_sub_module")
802  self.label_configuration_select_first_sub_module.setGeometry(QtCore.QRect(490, 20, 171, 17))
803  self.label_configuration_select_first_sub_module.setObjectName("label_configuration_select_first_sub_module")
805  self.label_configuration_select_second_sub_module.setGeometry(QtCore.QRect(780, 20, 191, 17))
806  self.label_configuration_select_second_sub_module.setObjectName("label_configuration_select_second_sub_module")
807  self.listWidget_configurations_of_sub_modules = QtWidgets.QListWidget(self.tab_2)
808  self.listWidget_configurations_of_sub_modules.setGeometry(QtCore.QRect(340, 260, 440, 371))
809  self.listWidget_configurations_of_sub_modules.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
810  self.listWidget_configurations_of_sub_modules.setObjectName("listWidget_configurations_of_sub_modules")
811  self.listWidget_sub_modules = QtWidgets.QListWidget(self.tab_2)
812  self.listWidget_sub_modules.setGeometry(QtCore.QRect(50, 260, 256, 371))
813  self.listWidget_sub_modules.setObjectName("listWidget_sub_modules")
814  self.label_configuration_failure_rate_10 = QtWidgets.QLabel(self.tab_2)
815  self.label_configuration_failure_rate_10.setGeometry(QtCore.QRect(400, 70, 91, 20))
816  self.label_configuration_failure_rate_10.setObjectName("label_configuration_failure_rate_10")
817  self.label_configuration_sub_module_list_4 = QtWidgets.QLabel(self.tab_2)
818  self.label_configuration_sub_module_list_4.setGeometry(QtCore.QRect(70, 30, 111, 20))
819  self.label_configuration_sub_module_list_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
820  self.label_configuration_sub_module_list_4.setObjectName("label_configuration_sub_module_list_4")
821  self.label_configuration_module_list = QtWidgets.QLabel(self.tab_2)
822  self.label_configuration_module_list.setGeometry(QtCore.QRect(80, 59, 101, 20))
823  self.label_configuration_module_list.setObjectName("label_configuration_module_list")
824  self.pushButton_select_final_configuration_of_module = QtWidgets.QPushButton(self.tab_2)
825  self.pushButton_select_final_configuration_of_module.setGeometry(QtCore.QRect(800, 600, 201, 27))
826  self.pushButton_select_final_configuration_of_module.setObjectName("pushButton_select_final_configuration_of_module")
827  self.label_configurations_5 = QtWidgets.QLabel(self.tab_2)
828  self.label_configurations_5.setGeometry(QtCore.QRect(500, 240, 111, 17))
829  self.label_configurations_5.setObjectName("label_configurations_5")
831  self.comboBox_configuration_select_second_sub_module.setGeometry(QtCore.QRect(780, 40, 161, 27))
832  self.comboBox_configuration_select_second_sub_module.setObjectName("comboBox_configuration_select_second_sub_module")
833  self.label_sub_module = QtWidgets.QLabel(self.tab_2)
834  self.label_sub_module.setGeometry(QtCore.QRect(120, 240, 91, 17))
835  self.label_sub_module.setObjectName("label_sub_module")
836  self.line_32 = QtWidgets.QFrame(self.tab_2)
837  self.line_32.setGeometry(QtCore.QRect(360, 20, 20, 191))
838  self.line_32.setFrameShape(QtWidgets.QFrame.VLine)
839  self.line_32.setFrameShadow(QtWidgets.QFrame.Sunken)
840  self.line_32.setObjectName("line_32")
841  self.tabWidget_types.addTab(self.tab_2, "")
842  self.tab_set_module_types_2 = QtWidgets.QWidget()
843  self.tab_set_module_types_2.setObjectName("tab_set_module_types_2")
844  self.label_configurations_3 = QtWidgets.QLabel(self.tab_set_module_types_2)
845  self.label_configurations_3.setGeometry(QtCore.QRect(500, 240, 111, 17))
846  self.label_configurations_3.setObjectName("label_configurations_3")
848  self.listWidget_configurations_of_modules.setGeometry(QtCore.QRect(340, 260, 440, 371))
849  self.listWidget_configurations_of_modules.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
850  self.listWidget_configurations_of_modules.setObjectName("listWidget_configurations_of_modules")
852  self.label_configuration_system_list.setGeometry(QtCore.QRect(80, 30, 101, 20))
853  self.label_configuration_system_list.setObjectName("label_configuration_system_list")
854  self.listWidget_modules = QtWidgets.QListWidget(self.tab_set_module_types_2)
855  self.listWidget_modules.setGeometry(QtCore.QRect(50, 260, 256, 371))
856  self.listWidget_modules.setObjectName("listWidget_modules")
857  self.label_modules = QtWidgets.QLabel(self.tab_set_module_types_2)
858  self.label_modules.setGeometry(QtCore.QRect(140, 240, 61, 17))
859  self.label_modules.setObjectName("label_modules")
861  self.lineEdit_configuration_failure_rate_second_module.setGeometry(QtCore.QRect(780, 70, 160, 27))
862  self.lineEdit_configuration_failure_rate_second_module.setReadOnly(True)
863  self.lineEdit_configuration_failure_rate_second_module.setObjectName("lineEdit_configuration_failure_rate_second_module")
865  self.lineEdit_configuration_failure_rate_first_module.setGeometry(QtCore.QRect(490, 70, 160, 27))
866  self.lineEdit_configuration_failure_rate_first_module.setReadOnly(True)
867  self.lineEdit_configuration_failure_rate_first_module.setObjectName("lineEdit_configuration_failure_rate_first_module")
868  self.pushButton_delete_module_config = QtWidgets.QPushButton(self.tab_set_module_types_2)
869  self.pushButton_delete_module_config.setGeometry(QtCore.QRect(800, 300, 101, 27))
870  self.pushButton_delete_module_config.setAutoDefault(False)
871  self.pushButton_delete_module_config.setDefault(False)
872  self.pushButton_delete_module_config.setFlat(False)
873  self.pushButton_delete_module_config.setObjectName("pushButton_delete_module_config")
874  self.pushButton_add_module_config = QtWidgets.QPushButton(self.tab_set_module_types_2)
875  self.pushButton_add_module_config.setGeometry(QtCore.QRect(800, 260, 99, 27))
876  self.pushButton_add_module_config.setObjectName("pushButton_add_module_config")
878  self.comboBox_configuration_st_sm_select_system.setGeometry(QtCore.QRect(190, 30, 161, 27))
879  self.comboBox_configuration_st_sm_select_system.setObjectName("comboBox_configuration_st_sm_select_system")
881  self.comboBox_configuration_select_second_module.setGeometry(QtCore.QRect(780, 40, 161, 27))
882  self.comboBox_configuration_select_second_module.setObjectName("comboBox_configuration_select_second_module")
883  self.groupBox_set_types_3 = QtWidgets.QGroupBox(self.tab_set_module_types_2)
884  self.groupBox_set_types_3.setGeometry(QtCore.QRect(480, 110, 591, 41))
885  self.groupBox_set_types_3.setTitle("")
886  self.groupBox_set_types_3.setObjectName("groupBox_set_types_3")
888  self.pushButton_configuration_set_module_type.setGeometry(QtCore.QRect(470, 10, 99, 27))
889  self.pushButton_configuration_set_module_type.setObjectName("pushButton_configuration_set_module_type")
890  self.label_22 = QtWidgets.QLabel(self.groupBox_set_types_3)
891  self.label_22.setGeometry(QtCore.QRect(177, 10, 16, 31))
892  font = QtGui.QFont()
893  font.setItalic(True)
894  self.label_22.setFont(font)
895  self.label_22.setObjectName("label_22")
896  self.label_23 = QtWidgets.QLabel(self.groupBox_set_types_3)
897  self.label_23.setGeometry(QtCore.QRect(280, 10, 16, 31))
898  font = QtGui.QFont()
899  font.setItalic(True)
900  self.label_23.setFont(font)
901  self.label_23.setObjectName("label_23")
903  self.lineEdit_configuration_second_module.setGeometry(QtCore.QRect(300, 10, 160, 27))
904  self.lineEdit_configuration_second_module.setReadOnly(True)
905  self.lineEdit_configuration_second_module.setObjectName("lineEdit_configuration_second_module")
907  self.comboBox_configuration_type_of_module.setGeometry(QtCore.QRect(195, 10, 80, 27))
908  self.comboBox_configuration_type_of_module.setObjectName("comboBox_configuration_type_of_module")
910  self.lineEdit_configuration_first_module.setGeometry(QtCore.QRect(10, 10, 160, 27))
911  self.lineEdit_configuration_first_module.setReadOnly(True)
912  self.lineEdit_configuration_first_module.setObjectName("lineEdit_configuration_first_module")
914  self.label_configuration_select_second_module.setGeometry(QtCore.QRect(780, 20, 191, 17))
915  self.label_configuration_select_second_module.setObjectName("label_configuration_select_second_module")
917  self.comboBox_configuration_select_first_module.setGeometry(QtCore.QRect(490, 40, 161, 27))
918  self.comboBox_configuration_select_first_module.setObjectName("comboBox_configuration_select_first_module")
920  self.label_configuration_select_first_module.setGeometry(QtCore.QRect(490, 20, 171, 17))
921  self.label_configuration_select_first_module.setObjectName("label_configuration_select_first_module")
923  self.label_configuration_failure_rate_5.setGeometry(QtCore.QRect(400, 70, 91, 21))
924  self.label_configuration_failure_rate_5.setObjectName("label_configuration_failure_rate_5")
925  self.line_21 = QtWidgets.QFrame(self.tab_set_module_types_2)
926  self.line_21.setGeometry(QtCore.QRect(360, 20, 20, 191))
927  self.line_21.setFrameShape(QtWidgets.QFrame.VLine)
928  self.line_21.setFrameShadow(QtWidgets.QFrame.Sunken)
929  self.line_21.setObjectName("line_21")
931  self.lineEdit_configuration_failure_rate_system.setGeometry(QtCore.QRect(190, 60, 160, 27))
932  self.lineEdit_configuration_failure_rate_system.setReadOnly(True)
933  self.lineEdit_configuration_failure_rate_system.setObjectName("lineEdit_configuration_failure_rate_system")
935  self.label_configuration_system_failure_rate.setGeometry(QtCore.QRect(50, 61, 141, 20))
936  self.label_configuration_system_failure_rate.setObjectName("label_configuration_system_failure_rate")
938  self.pushButton_select_final_configuration_of_system.setGeometry(QtCore.QRect(800, 600, 201, 27))
939  self.pushButton_select_final_configuration_of_system.setObjectName("pushButton_select_final_configuration_of_system")
941  self.comboBox_configuration_reliability_model.setGeometry(QtCore.QRect(190, 120, 160, 27))
942  self.comboBox_configuration_reliability_model.setObjectName("comboBox_configuration_reliability_model")
944  self.label_configuration_reliability_type.setGeometry(QtCore.QRect(0, 120, 181, 20))
945  self.label_configuration_reliability_type.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
946  self.label_configuration_reliability_type.setWordWrap(False)
947  self.label_configuration_reliability_type.setObjectName("label_configuration_reliability_type")
948  self.comboBox_configuration_unit = QtWidgets.QComboBox(self.tab_set_module_types_2)
949  self.comboBox_configuration_unit.setGeometry(QtCore.QRect(190, 180, 160, 27))
950  self.comboBox_configuration_unit.setObjectName("comboBox_configuration_unit")
951  self.label_configuration_unit = QtWidgets.QLabel(self.tab_set_module_types_2)
952  self.label_configuration_unit.setGeometry(QtCore.QRect(80, 180, 100, 20))
953  self.label_configuration_unit.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
954  self.label_configuration_unit.setWordWrap(True)
955  self.label_configuration_unit.setObjectName("label_configuration_unit")
957  self.lineEdit_configuration_reliability_shape_parameter.setGeometry(QtCore.QRect(190, 150, 75, 27))
958  self.lineEdit_configuration_reliability_shape_parameter.setReadOnly(False)
959  self.lineEdit_configuration_reliability_shape_parameter.setObjectName("lineEdit_configuration_reliability_shape_parameter")
961  self.label_configuration_shape_parameter.setGeometry(QtCore.QRect(47, 150, 130, 20))
962  self.label_configuration_shape_parameter.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
963  self.label_configuration_shape_parameter.setWordWrap(True)
964  self.label_configuration_shape_parameter.setObjectName("label_configuration_shape_parameter")
965  self.tabWidget_types.addTab(self.tab_set_module_types_2, "")
966  self.tabWidget_configuration.addTab(self.tab_set_type, "")
967  self.pushButton_c_ao_start_analysis = QtWidgets.QPushButton(self.tab_configuration)
968  self.pushButton_c_ao_start_analysis.setGeometry(QtCore.QRect(160, 740, 161, 50))
969  self.pushButton_c_ao_start_analysis.setObjectName("pushButton_c_ao_start_analysis")
970  self.pushButton_c_ao_save = QtWidgets.QPushButton(self.tab_configuration)
971  self.pushButton_c_ao_save.setGeometry(QtCore.QRect(880, 740, 100, 50))
972  self.pushButton_c_ao_save.setObjectName("pushButton_c_ao_save")
973  self.pushButton_c_ao_load = QtWidgets.QPushButton(self.tab_configuration)
974  self.pushButton_c_ao_load.setGeometry(QtCore.QRect(710, 740, 100, 50))
975  self.pushButton_c_ao_load.setObjectName("pushButton_c_ao_load")
976  self.tabWidget_general.addTab(self.tab_configuration, "")
977  self.tab_monitoring = QtWidgets.QWidget()
978  self.tab_monitoring.setObjectName("tab_monitoring")
979  self.tabWidget_monitoring = QtWidgets.QTabWidget(self.tab_monitoring)
980  self.tabWidget_monitoring.setGeometry(QtCore.QRect(0, 0, 1100, 900))
981  self.tabWidget_monitoring.setObjectName("tabWidget_monitoring")
982  self.tab_hazard_rate = QtWidgets.QWidget()
983  self.tab_hazard_rate.setObjectName("tab_hazard_rate")
984  self.groupBox_sys_failure_rate = QtWidgets.QGroupBox(self.tab_hazard_rate)
985  self.groupBox_sys_failure_rate.setGeometry(QtCore.QRect(560, 300, 200, 70))
986  self.groupBox_sys_failure_rate.setAlignment(QtCore.Qt.AlignCenter)
987  self.groupBox_sys_failure_rate.setObjectName("groupBox_sys_failure_rate")
988  self.lineEdit_m_sys_lambda = QtWidgets.QLineEdit(self.groupBox_sys_failure_rate)
989  self.lineEdit_m_sys_lambda.setGeometry(QtCore.QRect(0, 30, 200, 27))
990  self.lineEdit_m_sys_lambda.setReadOnly(True)
991  self.lineEdit_m_sys_lambda.setObjectName("lineEdit_m_sys_lambda")
992  self.widget_monitoring_hazard_rate = QtWidgets.QWidget(self.tab_hazard_rate)
993  self.widget_monitoring_hazard_rate.setGeometry(QtCore.QRect(150, 360, 800, 425))
994  self.widget_monitoring_hazard_rate.setObjectName("widget_monitoring_hazard_rate")
995  self.groupBox_hazard_rate_sensor_list = QtWidgets.QGroupBox(self.tab_hazard_rate)
996  self.groupBox_hazard_rate_sensor_list.setGeometry(QtCore.QRect(600, 20, 400, 290))
997  self.groupBox_hazard_rate_sensor_list.setObjectName("groupBox_hazard_rate_sensor_list")
999  self.pushButton_monitoring_deleted_sensor.setGeometry(QtCore.QRect(300, 30, 100, 30))
1000  self.pushButton_monitoring_deleted_sensor.setAutoDefault(False)
1001  self.pushButton_monitoring_deleted_sensor.setDefault(False)
1002  self.pushButton_monitoring_deleted_sensor.setFlat(False)
1003  self.pushButton_monitoring_deleted_sensor.setObjectName("pushButton_monitoring_deleted_sensor")
1005  self.label_sensor_list.setGeometry(QtCore.QRect(110, 10, 111, 17))
1006  self.label_sensor_list.setObjectName("label_sensor_list")
1008  self.listWidget_monitoring_hazard_rate_sensor_list.setGeometry(QtCore.QRect(40, 30, 250, 250))
1009  self.listWidget_monitoring_hazard_rate_sensor_list.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
1010  self.listWidget_monitoring_hazard_rate_sensor_list.setObjectName("listWidget_monitoring_hazard_rate_sensor_list")
1011  self.groupBox_hazard_rate_add_sensor = QtWidgets.QGroupBox(self.tab_hazard_rate)
1012  self.groupBox_hazard_rate_add_sensor.setGeometry(QtCore.QRect(100, 130, 440, 170))
1013  font = QtGui.QFont()
1014  font.setBold(False)
1015  font.setItalic(False)
1016  font.setUnderline(False)
1017  font.setWeight(50)
1018  font.setStrikeOut(False)
1019  font.setKerning(True)
1020  font.setStyleStrategy(QtGui.QFont.PreferAntialias)
1021  self.groupBox_hazard_rate_add_sensor.setFont(font)
1022  self.groupBox_hazard_rate_add_sensor.setFocusPolicy(QtCore.Qt.NoFocus)
1023  self.groupBox_hazard_rate_add_sensor.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
1024  self.groupBox_hazard_rate_add_sensor.setAlignment(QtCore.Qt.AlignCenter)
1025  self.groupBox_hazard_rate_add_sensor.setFlat(False)
1026  self.groupBox_hazard_rate_add_sensor.setCheckable(False)
1027  self.groupBox_hazard_rate_add_sensor.setChecked(False)
1028  self.groupBox_hazard_rate_add_sensor.setObjectName("groupBox_hazard_rate_add_sensor")
1029  self.label_37 = QtWidgets.QLabel(self.groupBox_hazard_rate_add_sensor)
1030  self.label_37.setGeometry(QtCore.QRect(20, 30, 121, 21))
1031  self.label_37.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
1032  self.label_37.setObjectName("label_37")
1034  self.comboBox_m_hazard_rate_select_sensor.setGeometry(QtCore.QRect(150, 30, 151, 27))
1035  self.comboBox_m_hazard_rate_select_sensor.setObjectName("comboBox_m_hazard_rate_select_sensor")
1037  self.lineEdit_m_hazard_rate_select_sensor_value.setGeometry(QtCore.QRect(150, 70, 151, 27))
1038  self.lineEdit_m_hazard_rate_select_sensor_value.setReadOnly(True)
1039  self.lineEdit_m_hazard_rate_select_sensor_value.setObjectName("lineEdit_m_hazard_rate_select_sensor_value")
1040  self.label_38 = QtWidgets.QLabel(self.groupBox_hazard_rate_add_sensor)
1041  self.label_38.setGeometry(QtCore.QRect(0, 70, 141, 21))
1042  self.label_38.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
1043  self.label_38.setObjectName("label_38")
1045  self.pushButton_m_hazard_rate_refresh_sensor.setGeometry(QtCore.QRect(310, 30, 125, 31))
1046  self.pushButton_m_hazard_rate_refresh_sensor.setObjectName("pushButton_m_hazard_rate_refresh_sensor")
1048  self.pushButton_m_hazard_rate_add_sensor.setGeometry(QtCore.QRect(170, 110, 100, 50))
1049  self.pushButton_m_hazard_rate_add_sensor.setObjectName("pushButton_m_hazard_rate_add_sensor")
1051  self.groupBox_sys_select_failure_rate_type.setGeometry(QtCore.QRect(340, 300, 200, 70))
1052  self.groupBox_sys_select_failure_rate_type.setAlignment(QtCore.Qt.AlignCenter)
1053  self.groupBox_sys_select_failure_rate_type.setObjectName("groupBox_sys_select_failure_rate_type")
1055  self.comboBox_m_sys_select_failure_rate_type.setGeometry(QtCore.QRect(0, 30, 200, 27))
1056  self.comboBox_m_sys_select_failure_rate_type.setObjectName("comboBox_m_sys_select_failure_rate_type")
1058  self.groupBox_sys_select_place_failure_rate.setGeometry(QtCore.QRect(100, 20, 440, 70))
1059  self.groupBox_sys_select_place_failure_rate.setAlignment(QtCore.Qt.AlignCenter)
1060  self.groupBox_sys_select_place_failure_rate.setObjectName("groupBox_sys_select_place_failure_rate")
1062  self.comboBox_m_select_place_failure_rate.setGeometry(QtCore.QRect(160, 30, 200, 27))
1063  self.comboBox_m_select_place_failure_rate.setObjectName("comboBox_m_select_place_failure_rate")
1064  self.label_39 = QtWidgets.QLabel(self.groupBox_sys_select_place_failure_rate)
1065  self.label_39.setGeometry(QtCore.QRect(0, 30, 151, 21))
1066  self.label_39.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
1067  self.label_39.setObjectName("label_39")
1068  self.tabWidget_monitoring.addTab(self.tab_hazard_rate, "")
1069  self.tab_reliability = QtWidgets.QWidget()
1070  self.tab_reliability.setObjectName("tab_reliability")
1071  self.widget_monitoring_reliability = QtWidgets.QWidget(self.tab_reliability)
1072  self.widget_monitoring_reliability.setGeometry(QtCore.QRect(150, 360, 800, 425))
1073  self.widget_monitoring_reliability.setObjectName("widget_monitoring_reliability")
1074  self.groupBox_sys_reliability = QtWidgets.QGroupBox(self.tab_reliability)
1075  self.groupBox_sys_reliability.setGeometry(QtCore.QRect(560, 300, 200, 70))
1076  self.groupBox_sys_reliability.setAlignment(QtCore.Qt.AlignCenter)
1077  self.groupBox_sys_reliability.setObjectName("groupBox_sys_reliability")
1078  self.lineEdit_m_sys_reliability = QtWidgets.QLineEdit(self.groupBox_sys_reliability)
1079  self.lineEdit_m_sys_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1080  self.lineEdit_m_sys_reliability.setReadOnly(True)
1081  self.lineEdit_m_sys_reliability.setObjectName("lineEdit_m_sys_reliability")
1083  self.groupBox_sys_select_reliability_type.setGeometry(QtCore.QRect(340, 300, 200, 70))
1084  self.groupBox_sys_select_reliability_type.setAlignment(QtCore.Qt.AlignCenter)
1085  self.groupBox_sys_select_reliability_type.setObjectName("groupBox_sys_select_reliability_type")
1087  self.comboBox_m_sys_select_reliability_type.setGeometry(QtCore.QRect(0, 30, 200, 27))
1088  self.comboBox_m_sys_select_reliability_type.setObjectName("comboBox_m_sys_select_reliability_type")
1089  self.groupBox_6 = QtWidgets.QGroupBox(self.tab_reliability)
1090  self.groupBox_6.setGeometry(QtCore.QRect(330, 30, 470, 200))
1091  self.groupBox_6.setObjectName("groupBox_6")
1092  self.groupBox_select_reliability_module = QtWidgets.QGroupBox(self.groupBox_6)
1093  self.groupBox_select_reliability_module.setGeometry(QtCore.QRect(0, 30, 200, 60))
1094  self.groupBox_select_reliability_module.setAlignment(QtCore.Qt.AlignCenter)
1095  self.groupBox_select_reliability_module.setFlat(False)
1096  self.groupBox_select_reliability_module.setCheckable(False)
1097  self.groupBox_select_reliability_module.setObjectName("groupBox_select_reliability_module")
1099  self.comboBox_m_reliability_module.setGeometry(QtCore.QRect(0, 30, 200, 27))
1100  self.comboBox_m_reliability_module.setCurrentText("")
1101  self.comboBox_m_reliability_module.setObjectName("comboBox_m_reliability_module")
1102  self.groupBox_module_reliability = QtWidgets.QGroupBox(self.groupBox_6)
1103  self.groupBox_module_reliability.setGeometry(QtCore.QRect(120, 120, 200, 70))
1104  self.groupBox_module_reliability.setAlignment(QtCore.Qt.AlignCenter)
1105  self.groupBox_module_reliability.setObjectName("groupBox_module_reliability")
1107  self.lineEdit_m_module_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1108  self.lineEdit_m_module_reliability.setReadOnly(True)
1109  self.lineEdit_m_module_reliability.setObjectName("lineEdit_m_module_reliability")
1111  self.groupBox_sys_select_module_reliability_type.setGeometry(QtCore.QRect(220, 30, 230, 70))
1112  self.groupBox_sys_select_module_reliability_type.setAlignment(QtCore.Qt.AlignCenter)
1113  self.groupBox_sys_select_module_reliability_type.setObjectName("groupBox_sys_select_module_reliability_type")
1115  self.comboBox_m_sys_select_module_reliability_type.setGeometry(QtCore.QRect(0, 30, 200, 27))
1116  self.comboBox_m_sys_select_module_reliability_type.setObjectName("comboBox_m_sys_select_module_reliability_type")
1117  self.tabWidget_monitoring.addTab(self.tab_reliability, "")
1118  self.tab_potc = QtWidgets.QWidget()
1119  self.tab_potc.setObjectName("tab_potc")
1120  self.tabWidget_2 = QtWidgets.QTabWidget(self.tab_potc)
1121  self.tabWidget_2.setGeometry(QtCore.QRect(0, 0, 1101, 900))
1122  self.tabWidget_2.setObjectName("tabWidget_2")
1123  self.tab_6 = QtWidgets.QWidget()
1124  self.tab_6.setObjectName("tab_6")
1125  self.widget_monitoring_potc = QtWidgets.QWidget(self.tab_6)
1126  self.widget_monitoring_potc.setGeometry(QtCore.QRect(160, 310, 800, 425))
1127  self.widget_monitoring_potc.setObjectName("widget_monitoring_potc")
1128  self.groupBox_m_potc_actual_group = QtWidgets.QGroupBox(self.tab_6)
1129  self.groupBox_m_potc_actual_group.setGeometry(QtCore.QRect(80, 30, 500, 275))
1130  self.groupBox_m_potc_actual_group.setAlignment(QtCore.Qt.AlignCenter)
1131  self.groupBox_m_potc_actual_group.setObjectName("groupBox_m_potc_actual_group")
1133  self.groupBox_sys_potc_reliability.setGeometry(QtCore.QRect(0, 190, 200, 70))
1134  self.groupBox_sys_potc_reliability.setAlignment(QtCore.Qt.AlignCenter)
1135  self.groupBox_sys_potc_reliability.setObjectName("groupBox_sys_potc_reliability")
1137  self.lineEdit_m_sys_potc_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1138  self.lineEdit_m_sys_potc_reliability.setReadOnly(True)
1139  self.lineEdit_m_sys_potc_reliability.setObjectName("lineEdit_m_sys_potc_reliability")
1141  self.groupBox_sys_potc_sb_reliability.setGeometry(QtCore.QRect(250, 190, 200, 70))
1142  self.groupBox_sys_potc_sb_reliability.setAlignment(QtCore.Qt.AlignCenter)
1143  self.groupBox_sys_potc_sb_reliability.setObjectName("groupBox_sys_potc_sb_reliability")
1145  self.lineEdit_m_sys_potc_sb_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1146  self.lineEdit_m_sys_potc_sb_reliability.setReadOnly(True)
1147  self.lineEdit_m_sys_potc_sb_reliability.setObjectName("lineEdit_m_sys_potc_sb_reliability")
1149  self.groupBox_m_potc_actual_time.setGeometry(QtCore.QRect(0, 50, 200, 70))
1150  self.groupBox_m_potc_actual_time.setAlignment(QtCore.Qt.AlignCenter)
1151  self.groupBox_m_potc_actual_time.setObjectName("groupBox_m_potc_actual_time")
1153  self.lineEdit_m_potc_actual_time.setGeometry(QtCore.QRect(0, 30, 200, 27))
1154  self.lineEdit_m_potc_actual_time.setReadOnly(True)
1155  self.lineEdit_m_potc_actual_time.setObjectName("lineEdit_m_potc_actual_time")
1157  self.groupBox_m_potc_actual_distance.setGeometry(QtCore.QRect(250, 50, 200, 70))
1158  self.groupBox_m_potc_actual_distance.setAlignment(QtCore.Qt.AlignCenter)
1159  self.groupBox_m_potc_actual_distance.setObjectName("groupBox_m_potc_actual_distance")
1161  self.lineEdit_m_potc_actual_distance.setGeometry(QtCore.QRect(0, 30, 200, 27))
1162  self.lineEdit_m_potc_actual_distance.setReadOnly(True)
1163  self.lineEdit_m_potc_actual_distance.setObjectName("lineEdit_m_potc_actual_distance")
1164  self.line_6 = QtWidgets.QFrame(self.groupBox_m_potc_actual_group)
1165  self.line_6.setGeometry(QtCore.QRect(0, 130, 500, 30))
1166  self.line_6.setFrameShadow(QtWidgets.QFrame.Plain)
1167  self.line_6.setLineWidth(3)
1168  self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
1169  self.line_6.setObjectName("line_6")
1170  self.groupBox_m_potc_predict_group = QtWidgets.QGroupBox(self.tab_6)
1171  self.groupBox_m_potc_predict_group.setGeometry(QtCore.QRect(580, 30, 450, 275))
1172  self.groupBox_m_potc_predict_group.setAlignment(QtCore.Qt.AlignCenter)
1173  self.groupBox_m_potc_predict_group.setObjectName("groupBox_m_potc_predict_group")
1175  self.groupBox_sys_potc_predict_reliability.setGeometry(QtCore.QRect(0, 190, 200, 70))
1176  self.groupBox_sys_potc_predict_reliability.setAlignment(QtCore.Qt.AlignCenter)
1177  self.groupBox_sys_potc_predict_reliability.setObjectName("groupBox_sys_potc_predict_reliability")
1179  self.lineEdit_m_sys_potc_predict_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1180  self.lineEdit_m_sys_potc_predict_reliability.setReadOnly(True)
1181  self.lineEdit_m_sys_potc_predict_reliability.setObjectName("lineEdit_m_sys_potc_predict_reliability")
1183  self.groupBox_sys_potc_predict_sb_reliability.setGeometry(QtCore.QRect(250, 190, 200, 70))
1184  self.groupBox_sys_potc_predict_sb_reliability.setAlignment(QtCore.Qt.AlignCenter)
1185  self.groupBox_sys_potc_predict_sb_reliability.setObjectName("groupBox_sys_potc_predict_sb_reliability")
1187  self.lineEdit_m_sys_potc_predict_sb_reliability.setGeometry(QtCore.QRect(0, 30, 200, 27))
1188  self.lineEdit_m_sys_potc_predict_sb_reliability.setReadOnly(True)
1189  self.lineEdit_m_sys_potc_predict_sb_reliability.setObjectName("lineEdit_m_sys_potc_predict_sb_reliability")
1191  self.groupBox_m_potc_predict_time.setGeometry(QtCore.QRect(0, 50, 200, 70))
1192  self.groupBox_m_potc_predict_time.setAlignment(QtCore.Qt.AlignCenter)
1193  self.groupBox_m_potc_predict_time.setObjectName("groupBox_m_potc_predict_time")
1195  self.lineEdit_m_potc_predict_time.setGeometry(QtCore.QRect(0, 30, 200, 27))
1196  self.lineEdit_m_potc_predict_time.setReadOnly(True)
1197  self.lineEdit_m_potc_predict_time.setObjectName("lineEdit_m_potc_predict_time")
1199  self.groupBox_m_potc_predict_distance.setGeometry(QtCore.QRect(250, 50, 200, 70))
1200  self.groupBox_m_potc_predict_distance.setAlignment(QtCore.Qt.AlignCenter)
1201  self.groupBox_m_potc_predict_distance.setObjectName("groupBox_m_potc_predict_distance")
1203  self.lineEdit_m_potc_predict_distance.setGeometry(QtCore.QRect(0, 30, 200, 27))
1204  self.lineEdit_m_potc_predict_distance.setReadOnly(True)
1205  self.lineEdit_m_potc_predict_distance.setObjectName("lineEdit_m_potc_predict_distance")
1206  self.line_7 = QtWidgets.QFrame(self.groupBox_m_potc_predict_group)
1207  self.line_7.setGeometry(QtCore.QRect(0, 130, 450, 30))
1208  self.line_7.setFrameShadow(QtWidgets.QFrame.Plain)
1209  self.line_7.setLineWidth(3)
1210  self.line_7.setFrameShape(QtWidgets.QFrame.HLine)
1211  self.line_7.setObjectName("line_7")
1212  self.line_8 = QtWidgets.QFrame(self.tab_6)
1213  self.line_8.setGeometry(QtCore.QRect(540, 70, 30, 210))
1214  self.line_8.setFrameShadow(QtWidgets.QFrame.Plain)
1215  self.line_8.setLineWidth(3)
1216  self.line_8.setFrameShape(QtWidgets.QFrame.VLine)
1217  self.line_8.setObjectName("line_8")
1218  self.tabWidget_2.addTab(self.tab_6, "")
1219  self.tab_7 = QtWidgets.QWidget()
1220  self.tab_7.setObjectName("tab_7")
1221  self.groupBox_potc_predict = QtWidgets.QGroupBox(self.tab_7)
1222  self.groupBox_potc_predict.setGeometry(QtCore.QRect(60, 30, 800, 600))
1223  self.groupBox_potc_predict.setObjectName("groupBox_potc_predict")
1225  self.groupBox_m_prognostic_potc_failure_rate.setGeometry(QtCore.QRect(510, 260, 200, 70))
1226  self.groupBox_m_prognostic_potc_failure_rate.setAlignment(QtCore.Qt.AlignCenter)
1227  self.groupBox_m_prognostic_potc_failure_rate.setObjectName("groupBox_m_prognostic_potc_failure_rate")
1229  self.lineEdit_m_prognostic_potc.setGeometry(QtCore.QRect(0, 30, 200, 27))
1230  self.lineEdit_m_prognostic_potc.setReadOnly(True)
1231  self.lineEdit_m_prognostic_potc.setObjectName("lineEdit_m_prognostic_potc")
1233  self.groupBox_m_prognostic_potc_simulation_time.setGeometry(QtCore.QRect(220, 260, 200, 70))
1234  self.groupBox_m_prognostic_potc_simulation_time.setAlignment(QtCore.Qt.AlignCenter)
1235  self.groupBox_m_prognostic_potc_simulation_time.setObjectName("groupBox_m_prognostic_potc_simulation_time")
1237  self.lineEdit_m_prognostic_potc_simulation_time.setGeometry(QtCore.QRect(0, 30, 200, 27))
1238  self.lineEdit_m_prognostic_potc_simulation_time.setReadOnly(True)
1239  self.lineEdit_m_prognostic_potc_simulation_time.setObjectName("lineEdit_m_prognostic_potc_simulation_time")
1240  self.groupBox_general = QtWidgets.QGroupBox(self.groupBox_potc_predict)
1241  self.groupBox_general.setGeometry(QtCore.QRect(0, 0, 800, 231))
1242  self.groupBox_general.setTitle("")
1243  self.groupBox_general.setObjectName("groupBox_general")
1245  self.groupBox_m_prognostic_potc_select_task.setGeometry(QtCore.QRect(220, 60, 200, 60))
1246  self.groupBox_m_prognostic_potc_select_task.setAlignment(QtCore.Qt.AlignCenter)
1247  self.groupBox_m_prognostic_potc_select_task.setFlat(False)
1248  self.groupBox_m_prognostic_potc_select_task.setCheckable(False)
1249  self.groupBox_m_prognostic_potc_select_task.setObjectName("groupBox_m_prognostic_potc_select_task")
1251  self.comboBox_m_prognostic_potc_select_task.setGeometry(QtCore.QRect(5, 25, 190, 27))
1252  self.comboBox_m_prognostic_potc_select_task.setCurrentText("")
1253  self.comboBox_m_prognostic_potc_select_task.setObjectName("comboBox_m_prognostic_potc_select_task")
1255  self.pushButton_m_prognostic_potc_start_simulation.setGeometry(QtCore.QRect(380, 170, 150, 50))
1256  self.pushButton_m_prognostic_potc_start_simulation.setObjectName("pushButton_m_prognostic_potc_start_simulation")
1258  self.groupBox_m_prognostic_potc_simulation_count.setGeometry(QtCore.QRect(510, 60, 200, 60))
1259  self.groupBox_m_prognostic_potc_simulation_count.setAlignment(QtCore.Qt.AlignCenter)
1260  self.groupBox_m_prognostic_potc_simulation_count.setFlat(False)
1261  self.groupBox_m_prognostic_potc_simulation_count.setCheckable(False)
1262  self.groupBox_m_prognostic_potc_simulation_count.setObjectName("groupBox_m_prognostic_potc_simulation_count")
1264  self.lineEdit_m_prognostic_potc_simulation_count.setGeometry(QtCore.QRect(5, 25, 190, 27))
1265  self.lineEdit_m_prognostic_potc_simulation_count.setObjectName("lineEdit_m_prognostic_potc_simulation_count")
1266  self.tabWidget_2.addTab(self.tab_7, "")
1267  self.tabWidget_monitoring.addTab(self.tab_potc, "")
1268  self.tabWidget_general.addTab(self.tab_monitoring, "")
1269  MainWindow.setCentralWidget(self.centralwidget)
1270  self.menubar = QtWidgets.QMenuBar(MainWindow)
1271  self.menubar.setGeometry(QtCore.QRect(0, 0, 1100, 25))
1272  self.menubar.setObjectName("menubar")
1273  MainWindow.setMenuBar(self.menubar)
1274  self.statusbar = QtWidgets.QStatusBar(MainWindow)
1275  self.statusbar.setObjectName("statusbar")
1276  MainWindow.setStatusBar(self.statusbar)
1277 
1278 
1279  # ---------------------------------------------------------------------------------------------------------------
1280 
1281  self.gui_main()
1282 
1283  # ---------------------------------------------------------------------------------------------------------------
1284 
1285  self.retranslateUi(MainWindow)
1286  self.tabWidget_general.setCurrentIndex(0)
1287  self.tabWidget_configuration.setCurrentIndex(0)
1288  self.tabWidget.setCurrentIndex(0)
1289  self.tabWidget_5.setCurrentIndex(0)
1290  self.tabWidget_types.setCurrentIndex(0)
1291  self.tabWidget_monitoring.setCurrentIndex(0)
1292  self.tabWidget_2.setCurrentIndex(0)
1293  QtCore.QMetaObject.connectSlotsByName(MainWindow)
1294 
1295 
1296  def retranslateUi(self, MainWindow):
1297  """
1298  PHM Gui Retranslate Ui
1299  """
1300  _translate = QtCore.QCoreApplication.translate
1301  MainWindow.setWindowTitle(_translate("MainWindow", "PHM GUI"))
1302  self.groupBox_c_ao_am_add_module.setTitle(_translate("MainWindow", "Add Module"))
1303  self.label_12.setText(_translate("MainWindow", "Set module name:"))
1304  self.groupBox_c_ao_am_module_fr.setTitle(_translate("MainWindow", "Set failure rate"))
1305  self.label_13.setText(_translate("MainWindow", "Module failure rate:"))
1306  self.label_42.setText(_translate("MainWindow", "Type : "))
1307  self.label_43.setText(_translate("MainWindow", "Total failure rate:"))
1308  self.label_44.setText(_translate("MainWindow", "Quantity : "))
1309  self.pushButton_c_ao_am_add_module.setText(_translate("MainWindow", "Add"))
1310  self.groupBox_c_ao_am_list_of_modules.setTitle(_translate("MainWindow", "List of modules"))
1311  self.pushButton_c_ao_am_delete_module.setText(_translate("MainWindow", "Delete"))
1312  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Add Module"))
1313  self.groupBox_c_ao_asm_sub_module_fr.setTitle(_translate("MainWindow", "Set failure rate"))
1314  self.label_18.setText(_translate("MainWindow", "Sub-Module failure rate:"))
1315  self.label_36.setText(_translate("MainWindow", "Quantity : "))
1316  self.label_40.setText(_translate("MainWindow", "Total failure rate:"))
1317  self.label_41.setText(_translate("MainWindow", "Type : "))
1318  self.groupBox_c_ao_asm_default_fr.setTitle(_translate("MainWindow", "Set failure rate from default equipments"))
1319  self.label_19.setText(_translate("MainWindow", "Select the equipment :"))
1320  self.label_20.setText(_translate("MainWindow", "Type : "))
1321  self.label_21.setText(_translate("MainWindow", "Total failure rate:"))
1322  self.label_30.setText(_translate("MainWindow", "Quantity : "))
1323  self.pushButton_c_ao_asm_set_equipment.setText(_translate("MainWindow", "Set Equipment"))
1324  self.label_33.setText(_translate("MainWindow", "Equipment failure rate : "))
1325  self.label_28.setText(_translate("MainWindow", "Select module : "))
1326  self.pushButton_c_ao_asm_add_sub_module.setText(_translate("MainWindow", "Add"))
1327  self.label_29.setText(_translate("MainWindow", "Set sub-module name"))
1328  self.groupBox_c_ao_asm_list_of_sub_modules.setTitle(_translate("MainWindow", "List of sub-modules"))
1329  self.pushButton_c_ao_asm_delete_sub_module.setText(_translate("MainWindow", "Delete"))
1330  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("MainWindow", "Add Sub-Module"))
1331  self.pushButton_c_ao_ac_add_component.setText(_translate("MainWindow", "Add"))
1332  self.label_9.setText(_translate("MainWindow", "Select module : "))
1333  self.label_14.setText(_translate("MainWindow", "Select sub - module : "))
1334  self.groupBox_c_ao_ac_list_of_components.setTitle(_translate("MainWindow", "List of components"))
1335  self.pushButton_c_ao_ac_delete_component.setText(_translate("MainWindow", "Delete"))
1336  self.groupBox_c_ao_ac_default_fr.setTitle(_translate("MainWindow", "Set default component from equipments"))
1337  self.label_7.setText(_translate("MainWindow", "Select the equipment :"))
1338  self.label_8.setText(_translate("MainWindow", "Quantity : "))
1339  self.label_11.setText(_translate("MainWindow", "Equipment failure rate : "))
1340  self.pushButton_c_ao_ac_set_equipment.setText(_translate("MainWindow", "Set Equipment"))
1341  self.label_34.setText(_translate("MainWindow", "Total failure rate : "))
1342  self.label_17.setText(_translate("MainWindow", "Set component name"))
1343  self.groupBox_c_ao_ac_component_fr.setTitle(_translate("MainWindow", "Set failure rate"))
1344  self.label_10.setText(_translate("MainWindow", "Component failure rate:"))
1345  self.label_31.setText(_translate("MainWindow", "Quantity : "))
1346  self.label_35.setText(_translate("MainWindow", "Total failure rate : "))
1347  self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_10), _translate("MainWindow", "Default Components"))
1348  self.label.setText(_translate("MainWindow", "Select module : "))
1349  self.label_2.setText(_translate("MainWindow", "Select sub - module : "))
1350  self.label_4.setText(_translate("MainWindow", "Set element name"))
1351  self.label_5.setText(_translate("MainWindow", "Set variable name of the element"))
1352  self.pushButton_c_ao_ace_add_component_element.setText(_translate("MainWindow", "Add"))
1353  self.groupBox_c_ao_ace_set_element_value.setTitle(_translate("MainWindow", "Set element value:"))
1354  self.label_32.setText(_translate("MainWindow", "Set component name"))
1355  self.groupBox_c_ao_ace_list_of_elements.setTitle(_translate("MainWindow", "List of elements"))
1356  self.pushButton_c_ao_ace_delete_element.setText(_translate("MainWindow", "Delete"))
1357  self.label_3.setText(_translate("MainWindow", "Select component : "))
1358  self.pushButton_c_ao_ac_set_formula.setText(_translate("MainWindow", "Set Formula"))
1359  self.label_15.setText(_translate("MainWindow", "Set formula of component"))
1360  self.label_16.setText(_translate("MainWindow", "Failure Rate: "))
1361  self.label_6.setText(_translate("MainWindow", "Select component : "))
1362  self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_11), _translate("MainWindow", "Custom Components"))
1363  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Add Component"))
1364  self.tabWidget_configuration.setTabText(self.tabWidget_configuration.indexOf(self.tab_add_object), _translate("MainWindow", "Robot Design"))
1365  self.label_configurations_4.setText(_translate("MainWindow", "Configurations"))
1366  self.label_configuration_select_first_comp.setText(_translate("MainWindow", "Select first component"))
1367  self.label_configuration_sub_module_list_3.setText(_translate("MainWindow", "Select system:"))
1368  self.pushButton_configuration_set_comp_type.setText(_translate("MainWindow", "Set"))
1369  self.label_24.setText(_translate("MainWindow", "is"))
1370  self.label_25.setText(_translate("MainWindow", "to"))
1371  self.pushButton_delete_component_config.setText(_translate("MainWindow", "Delete"))
1372  self.pushButton_add_component_config.setText(_translate("MainWindow", "Add"))
1373  self.label_configuration_select_second_comp.setText(_translate("MainWindow", "Select second component"))
1374  self.pushButton_select_final_configuration_of_sub_module.setText(_translate("MainWindow", "Select as final configuraiton"))
1375  self.label_configuration_failure_rate_7.setText(_translate("MainWindow", "Failure rate:"))
1376  self.label_configuration_sub_module_list_2.setText(_translate("MainWindow", "Select module:"))
1377  self.label_configuration_sub_module_list.setText(_translate("MainWindow", "Select sub-module:"))
1378  self.label_components.setText(_translate("MainWindow", "Components"))
1379  self.label_configuration_failure_rate_8.setText(_translate("MainWindow", "Sub-module failure rate:"))
1380  self.tabWidget_types.setTabText(self.tabWidget_types.indexOf(self.tab), _translate("MainWindow", "Sub Module Configuration"))
1381  self.pushButton_delete_sub_module_config.setText(_translate("MainWindow", "Delete"))
1382  self.pushButton_add_sub_module_config.setText(_translate("MainWindow", "Add"))
1383  self.pushButton_configuration_set_sub_module_type.setText(_translate("MainWindow", "Set"))
1384  self.label_26.setText(_translate("MainWindow", "is"))
1385  self.label_27.setText(_translate("MainWindow", "to"))
1386  self.label_configuration_failure_rate_9.setText(_translate("MainWindow", "Module failure rate:"))
1387  self.label_configuration_select_first_sub_module.setText(_translate("MainWindow", "Select first sub-module"))
1388  self.label_configuration_select_second_sub_module.setText(_translate("MainWindow", "Select second sub-module"))
1389  self.label_configuration_failure_rate_10.setText(_translate("MainWindow", "Failure rate:"))
1390  self.label_configuration_sub_module_list_4.setText(_translate("MainWindow", "Select system:"))
1391  self.label_configuration_module_list.setText(_translate("MainWindow", "Select module:"))
1392  self.pushButton_select_final_configuration_of_module.setText(_translate("MainWindow", "Select as final configuraiton"))
1393  self.label_configurations_5.setText(_translate("MainWindow", "Configurations"))
1394  self.label_sub_module.setText(_translate("MainWindow", "Sub-modules"))
1395  self.tabWidget_types.setTabText(self.tabWidget_types.indexOf(self.tab_2), _translate("MainWindow", "Module Configuration"))
1396  self.label_configurations_3.setText(_translate("MainWindow", "Configurations"))
1397  self.label_configuration_system_list.setText(_translate("MainWindow", "Select system:"))
1398  self.label_modules.setText(_translate("MainWindow", "Modules"))
1399  self.pushButton_delete_module_config.setText(_translate("MainWindow", "Delete"))
1400  self.pushButton_add_module_config.setText(_translate("MainWindow", "Add"))
1401  self.pushButton_configuration_set_module_type.setText(_translate("MainWindow", "Set"))
1402  self.label_22.setText(_translate("MainWindow", "is"))
1403  self.label_23.setText(_translate("MainWindow", "to"))
1404  self.label_configuration_select_second_module.setText(_translate("MainWindow", "Select second module"))
1405  self.label_configuration_select_first_module.setText(_translate("MainWindow", "Select first module"))
1406  self.label_configuration_failure_rate_5.setText(_translate("MainWindow", "Failure rate:"))
1407  self.label_configuration_system_failure_rate.setText(_translate("MainWindow", "System failure rate:"))
1408  self.pushButton_select_final_configuration_of_system.setText(_translate("MainWindow", "Select as final configuraiton"))
1409  self.label_configuration_reliability_type.setText(_translate("MainWindow", "Select reliability model : "))
1410  self.label_configuration_unit.setText(_translate("MainWindow", "Select unit : "))
1411  self.label_configuration_shape_parameter.setText(_translate("MainWindow", "Shape Parameter :"))
1412  self.tabWidget_types.setTabText(self.tabWidget_types.indexOf(self.tab_set_module_types_2), _translate("MainWindow", "System Configuration"))
1413  self.tabWidget_configuration.setTabText(self.tabWidget_configuration.indexOf(self.tab_set_type), _translate("MainWindow", "Configuration Setup"))
1414  self.pushButton_c_ao_start_analysis.setText(_translate("MainWindow", "START ANALYSIS"))
1415  self.pushButton_c_ao_save.setText(_translate("MainWindow", "SAVE"))
1416  self.pushButton_c_ao_load.setText(_translate("MainWindow", "LOAD"))
1417  self.tabWidget_general.setTabText(self.tabWidget_general.indexOf(self.tab_configuration), _translate("MainWindow", "Robot Configuration Setup"))
1418  self.groupBox_sys_failure_rate.setTitle(_translate("MainWindow", "System Failure Rate - λ"))
1419  self.groupBox_hazard_rate_sensor_list.setTitle(_translate("MainWindow", "Sensors"))
1420  self.pushButton_monitoring_deleted_sensor.setText(_translate("MainWindow", "Delete"))
1421  self.label_sensor_list.setText(_translate("MainWindow", "Sensor List"))
1422  self.groupBox_hazard_rate_add_sensor.setTitle(_translate("MainWindow", "Add Sensor"))
1423  self.label_37.setText(_translate("MainWindow", "Select a sensor:"))
1424  self.label_38.setText(_translate("MainWindow", "Sensor value:"))
1425  self.pushButton_m_hazard_rate_refresh_sensor.setText(_translate("MainWindow", "Refresh"))
1426  self.pushButton_m_hazard_rate_add_sensor.setText(_translate("MainWindow", "Add Sensor"))
1427  self.groupBox_sys_select_failure_rate_type.setTitle(_translate("MainWindow", "Select Failure Rate"))
1428  self.groupBox_sys_select_place_failure_rate.setTitle(_translate("MainWindow", "Sensor"))
1429  self.label_39.setText(_translate("MainWindow", "Where is the sensor? "))
1430  self.tabWidget_monitoring.setTabText(self.tabWidget_monitoring.indexOf(self.tab_hazard_rate), _translate("MainWindow", "Hazard Rate Analysis"))
1431  self.groupBox_sys_reliability.setTitle(_translate("MainWindow", "System Reliability - R"))
1432  self.groupBox_sys_select_reliability_type.setTitle(_translate("MainWindow", "Select Reliability"))
1433  self.groupBox_6.setTitle(_translate("MainWindow", "Module Reliability"))
1434  self.groupBox_select_reliability_module.setTitle(_translate("MainWindow", "Select Module"))
1435  self.groupBox_module_reliability.setTitle(_translate("MainWindow", "Module Reliability - R"))
1436  self.groupBox_sys_select_module_reliability_type.setTitle(_translate("MainWindow", "Select Module Reliability Type"))
1437  self.tabWidget_monitoring.setTabText(self.tabWidget_monitoring.indexOf(self.tab_reliability), _translate("MainWindow", "Reliability Analysis"))
1438  self.groupBox_m_potc_actual_group.setTitle(_translate("MainWindow", "Actual Analysis"))
1439  self.groupBox_sys_potc_reliability.setTitle(_translate("MainWindow", "Nominal PoTC"))
1440  self.groupBox_sys_potc_sb_reliability.setTitle(_translate("MainWindow", "Sensor Based PoTC"))
1441  self.groupBox_m_potc_actual_time.setTitle(_translate("MainWindow", "Actual Time"))
1442  self.groupBox_m_potc_actual_distance.setTitle(_translate("MainWindow", "Actual Distance"))
1443  self.groupBox_m_potc_predict_group.setTitle(_translate("MainWindow", "Predict Analysis"))
1444  self.groupBox_sys_potc_predict_reliability.setTitle(_translate("MainWindow", "Nominal PoTC"))
1445  self.groupBox_sys_potc_predict_sb_reliability.setTitle(_translate("MainWindow", "Sensor Based PoTC"))
1446  self.groupBox_m_potc_predict_time.setTitle(_translate("MainWindow", "Predicted Time"))
1447  self.groupBox_m_potc_predict_distance.setTitle(_translate("MainWindow", "Predicted Distance"))
1448  self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_6), _translate("MainWindow", "Real Time Analysis"))
1449  self.groupBox_potc_predict.setTitle(_translate("MainWindow", "Predict PoTC"))
1450  self.groupBox_m_prognostic_potc_failure_rate.setTitle(_translate("MainWindow", "Predicted PoTC"))
1451  self.groupBox_m_prognostic_potc_simulation_time.setTitle(_translate("MainWindow", "Simulation Time"))
1452  self.groupBox_m_prognostic_potc_select_task.setTitle(_translate("MainWindow", "Select Task"))
1453  self.pushButton_m_prognostic_potc_start_simulation.setText(_translate("MainWindow", "Predict Simulation"))
1454  self.groupBox_m_prognostic_potc_simulation_count.setTitle(_translate("MainWindow", "Simulation Count"))
1455  self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_7), _translate("MainWindow", "Prognostic Analysis"))
1456  self.tabWidget_monitoring.setTabText(self.tabWidget_monitoring.indexOf(self.tab_potc), _translate("MainWindow", "Task Completion Analysis"))
1457  self.tabWidget_general.setTabText(self.tabWidget_general.indexOf(self.tab_monitoring), _translate("MainWindow", "Monitoring and Analysis"))
1458 
1459 
1460 # ------------------------------------------------------------------------------------------------
1461 
1462 # "PHM MAIN FUNCTIONS" - START -
1463 
1464  def gui_main(self):
1465  """
1466  PHM Gui Main Function
1467  """
1468  app.aboutToQuit.connect(self.close_event)
1469 
1470  self.pushButton_c_ao_start_analysis.clicked.connect(self.click_start_analysis_func)
1471 
1474 
1475  # CONFIGURATION // SET TYPE
1477 
1478  # CONFIGURATION // ADD OBJECT 2
1480 
1481  # MONITORING
1482  self.monitoring_events_func()
1484 
1485  self.pushButton_m_prognostic_potc_start_simulation.clicked.connect(self.monitoring_prognostic_robot_task_completion_func)
1486  self.gui_main_plot()
1488 
1489  # PHM START - SAVE AND LOAD
1491 
1492 
1493  def gui_main_plot(self):
1494  """
1495  PHM Gui Main Plot Function
1496  """
1497  # MONITORING
1498  # Gui Graphs
1499  layout = QtWidgets.QVBoxLayout(self.widget_monitoring_hazard_rate)
1500  monitoring_hazard_rate_dinamic_canvas = DynamicPlot(self, "lineEdit_m_sys_lambda", "phm_gui_time", self.widget_monitoring_hazard_rate, width=5, height=4, dpi=100)
1501  layout.addWidget(monitoring_hazard_rate_dinamic_canvas)
1502  self.widget_monitoring_hazard_rate.setFocus()
1503 
1504  layout = QtWidgets.QVBoxLayout(self.widget_monitoring_reliability)
1505  reliability_dinamic_canvas = ReliabilityPlot(self, "lineEdit_m_sys_reliability", "phm_gui_time", self.reliability_plot_scale_list, self.widget_monitoring_reliability, width=5, height=4, dpi=100)
1506  layout.addWidget(reliability_dinamic_canvas)
1507  self.widget_monitoring_reliability.setFocus()
1508 
1509  layout = QtWidgets.QVBoxLayout(self.widget_monitoring_potc)
1510  potc_static_canvas = POTCPlot(self, "potc_main_dict", width=5, height=4, dpi=100)
1511  layout.addWidget(potc_static_canvas)
1512  self.widget_monitoring_potc.setFocus()
1513 
1514 
1515  def close_event(self):
1516  """
1517  PHM Gui Close Event Function
1518  """
1519  rospy.signal_shutdown("ROS Close")
1520  print("\n\nSystem is closing...\n\n")
1521 
1522  file_dir = "phm_start/params/"
1523  temp_file_name = "last_configurations"
1524  temp_data = self.main_dict
1525 
1526  self.fill_the_file_with_data(file_dir, temp_file_name, temp_data)
1527 
1528  print("\n\nYour files are saving...\n\n")
1529 
1530 
1532  """
1533  Start Anaylsis Function
1534  """
1535  self.label_configuration_reliability_type.setEnabled(False)
1536  self.comboBox_configuration_reliability_model.setEnabled(False)
1537  self.label_configuration_shape_parameter.setEnabled(False)
1538  self.lineEdit_configuration_reliability_shape_parameter.setEnabled(False)
1539  self.label_configuration_unit.setEnabled(False)
1540  self.comboBox_configuration_unit.setEnabled(False)
1541  self.pushButton_c_ao_start_analysis.setEnabled(False)
1542 
1543  self.general_threads_func()
1544 
1545 
1547  """
1548  Start Set Reliability Model and Unit Function
1549  """
1550  self.comboBox_configuration_reliability_model.addItems(self.configuration_reliability_model)
1551  self.comboBox_configuration_unit.addItems(self.configuration_reliability_unit)
1552  self.label_configuration_shape_parameter.setEnabled(False)
1553  self.lineEdit_configuration_reliability_shape_parameter.setEnabled(False)
1554 
1555 
1556 # "PHM MAIN FUNCTIONS" - END -
1557 
1558 # "PHM GENERAL THREADS FUNCTIONS" - START -
1559 
1561  """
1562  PHM General Threads Function
1563  """
1565  self.thread_calculation_system_main_dict.start()
1566 
1568  self.thread_monitoring_system_potc.start()
1569 
1571  self.thread_temperature_sensor_dict.start()
1572 
1573 
1575  """
1576  Calculation System Main Dict Thread Function
1577  """
1578  try:
1579  while not rospy.is_shutdown():
1582 
1585 
1587  #print("\n\n")
1588  #print(self.main_dict)
1589  #print("\n\n")
1590 
1591  self.thread_rate.sleep()
1592 
1593  except Exception as err:
1594  print("\nError: thread_calculation_system_main_dict_func\n")
1595  print(err)
1596 
1597 
1599  """
1600  Monitoring System POTC Thread Function
1601  """
1602  try:
1603  while not rospy.is_shutdown():
1605 
1606  self.thread_rate.sleep()
1607 
1608  except Exception as err:
1609  print("\nError: thread_monitoring_system_potc_func\n")
1610  print(err)
1611 
1612 
1614  """
1615  Temperature Sensors Thread Function
1616  """
1617  try:
1618  while not rospy.is_shutdown():
1620 
1621  self.thread_rate.sleep()
1622 
1623  except Exception as err:
1624  print("\nError: thread_temperature_sensors_func\n")
1625  print(err)
1626 
1627 # "PHM GENERAL THREADS FUNCTIONS" - END -
1628 
1629 # "PHM GENERAL PUBLISHER FUNCTIONS" - START -
1630 
1632  """
1633  /gui_hazard_rate Publisher Function
1634  """
1635  phm_msg = String()
1636 
1637  filtered_hazard_rate_dict = self.filter_hazard_rate_func(self.main_dict)
1638  phm_msg.data = str(filtered_hazard_rate_dict)
1639 
1640  self.publisher_gui_hazard_rate.publish(phm_msg)
1641 
1642 
1643  def filter_hazard_rate_func(self, main_dict):
1644  """
1645  Hazard Rate Filter Function
1646  """
1647  filtered_dict = dict()
1648  system_dict_keys = list(main_dict["System"].keys())
1649  filtered_dict["System"] = {"Failure Rate": main_dict["System"]["Failure Rate"]}
1650  self.remove_key(system_dict_keys)
1651 
1652  for item in system_dict_keys:
1653  filtered_dict["System"][str(item)] = {"Failure Rate": main_dict["System"][str(item)]["Failure Rate"]}
1654 
1655  return filtered_dict
1656 
1657 
1659  """
1660  /gui_reliability Publisher Function
1661  """
1662  phm_msg = String()
1663 
1664  filtered_reliability_dict = self.filter_reliability_func(self.main_dict)
1665  phm_msg.data = str(filtered_reliability_dict)
1666 
1667  self.publisher_gui_reliability.publish(phm_msg)
1668 
1669 
1670  def filter_reliability_func(self, main_dict):
1671  """
1672  Reliability Filter Function
1673  """
1674  filtered_dict = dict()
1675  system_dict_keys = list(main_dict["System"].keys())
1676  filtered_dict["System"] = {"Reliability": main_dict["System"]["Reliability"]}
1677  self.remove_key(system_dict_keys)
1678 
1679  for item in system_dict_keys:
1680  filtered_dict["System"][str(item)] = {"Reliability": main_dict["System"][str(item)]["Reliability"]}
1681 
1682  return filtered_dict
1683 
1684 
1685  def publisher_gui_actual_potc_func(self, publish_data):
1686  """
1687  /gui_actual_potc Publisher Function
1688  """
1689  phm_msg = String()
1690  phm_msg.data = str(publish_data)
1691 
1692  self.publisher_gui_actual_potc.publish(phm_msg)
1693 
1694 
1695  def publisher_gui_predict_potc_func(self, publish_data):
1696  """
1697  /gui_predict_potc Publisher Function
1698  """
1699  phm_msg = String()
1700  phm_msg.data = str(publish_data)
1701 
1702  self.publisher_gui_predict_potc.publish(phm_msg)
1703 
1704 
1705 # "PHM GENERAL PUBLISHER FUNCTIONS" - END -
1706 
1707 # "PHM SYSTEM GENERAL CALCULATION FUNCTIONS" - START -
1708 
1710  """
1711  Selected System Calculation Function
1712  """
1713  try:
1714  selected_system = "System"
1715  start = time.time()
1716  self.main_dict_module_calculate_func(selected_system)
1717  done = time.time()
1718  time_diff = done - start
1719  #print("\n\n\nTime diff")
1720  #print(time_diff)
1721 
1722  except Exception as err:
1723  print("\nError: main_dict_selected_system_calculation_func\n")
1724  print(err)
1725 
1726 
1727  def main_dict_module_calculate_func(self, selected_system):
1728  """
1729  Module Calculation Function
1730  """
1731  try:
1732  selected_system_dict = self.main_dict[str(selected_system)]
1733  selected_configuration = dict(selected_system_dict["Configurations"])
1734  del selected_configuration["Configuration Count"]
1735  control_dict = dict()
1736 
1737  if str(selected_configuration) != str(control_dict):
1738  system_depth_level = selected_configuration["Depth Level"]
1739  selected_final_configuration = selected_system_dict["Final Configuration"]
1740 
1741  configuration_list = list(selected_configuration.keys())
1742  self.remove_key(configuration_list)
1743 
1744  module_list = list(selected_system_dict.keys())
1745  self.remove_key(module_list)
1746 
1747  sorted_list = self.sorted_list_for_depth_level(selected_configuration, configuration_list, system_depth_level)
1748 
1749  # Alt katmandakilerin hesabi yapildi
1750  for module in module_list:
1751  self.main_dict_sub_module_calculate_func(selected_system, module)
1752 
1753  # Mevcut katmanin isi yapiliyor
1754  for item in sorted_list:
1755  item_module_list = selected_system_dict["Configurations"][str(item)]["Components"]
1756  item_type = selected_system_dict["Configurations"][str(item)]["Type"]
1757 
1758  calculate_fr = self.calculate_selected_module_fr_func(selected_system, configuration_list, item_module_list, item_type, True)
1759  sb_calculate_fr = self.calculate_selected_module_fr_func(selected_system, configuration_list, item_module_list, item_type, False)
1760 
1761  self.main_dict[str(selected_system)]["Configurations"][str(item)]["Failure Rate"]["Nominal"] = calculate_fr
1762  self.main_dict[str(selected_system)]["Configurations"][str(item)]["Failure Rate"]["Sensor Based"] = sb_calculate_fr
1763 
1764  configuration_keys = list(self.main_dict[str(selected_system)]["Configurations"].keys())
1765  self.remove_key(configuration_keys)
1766 
1767  if selected_final_configuration not in configuration_keys:
1768  if selected_final_configuration not in module_list:
1769  self.main_dict[str(selected_system)]["Final Configuration"] = ""
1770  selected_final_configuration == ""
1771 
1772  if selected_final_configuration == "":
1773  selected_system_fr = 0.0
1774  selected_system_sb_fr = 0.0
1775 
1776  else:
1777  if selected_final_configuration in configuration_keys:
1778  selected_system_fr = self.main_dict[str(selected_system)]["Configurations"][str(selected_final_configuration)]["Failure Rate"]["Nominal"]
1779  selected_system_sb_fr = self.main_dict[str(selected_system)]["Configurations"][str(selected_final_configuration)]["Failure Rate"]["Sensor Based"]
1780 
1781  else:
1782  selected_system_fr = self.main_dict[str(selected_system)][str(selected_final_configuration)]["Failure Rate"]["Nominal"]
1783  selected_system_sb_fr = self.main_dict[str(selected_system)][str(selected_final_configuration)]["Failure Rate"]["Sensor Based"]
1784 
1785  self.main_dict[str(selected_system)]["Failure Rate"]["Nominal"] = selected_system_fr
1786  self.main_dict[str(selected_system)]["Failure Rate"]["Sensor Based"] = selected_system_sb_fr
1787 
1788  selected_system_fr = self.main_dict[str(selected_system)]["Failure Rate"]["Nominal"]
1789  selected_system_reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, selected_system_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
1790  self.main_dict[str(selected_system)]["Reliability"]["Nominal"] = selected_system_reliability
1791 
1792  selected_system_sb_fr = self.main_dict[str(selected_system)]["Failure Rate"]["Sensor Based"]
1793  selected_system_sb_reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, selected_system_sb_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
1794  self.main_dict[str(selected_system)]["Reliability"]["Sensor Based"] = selected_system_sb_reliability
1795 
1796  except Exception as err:
1797  print("\nError: main_dict_module_calculate_func\n")
1798  print(err)
1799 
1800 
1801  def calculate_selected_module_fr_func(self, selected_system, object_keys, select_module_list, object_type, fr_type):
1802  """
1803  Selected Module Failure Rate Calculation Function
1804  """
1805  try:
1806  fr_list = list()
1807  calculate_fr = 0.0
1808 
1809  if fr_type:
1810  failure_rate_type = "Nominal"
1811 
1812  else:
1813  failure_rate_type = "Sensor Based"
1814 
1815  for item in select_module_list:
1816  if item in object_keys:
1817  selected_fr = self.main_dict[str(selected_system)]['Configurations'][str(item)]['Failure Rate'][str(failure_rate_type)]
1818 
1819  if selected_fr != None and selected_fr != "None":
1820  fr_list.append(selected_fr)
1821 
1822  else:
1823  fr_type_list = list(self.main_dict[str(selected_system)][str(item)]['Failure Rate'].keys())
1824  fr_type_list.remove("Nominal")
1825 
1826  if len(fr_type_list) > 0 and not fr_type:
1827  selected_fr = self.main_dict[str(selected_system)][str(item)]['Failure Rate'][str(failure_rate_type)]
1828 
1829  else:
1830  selected_fr = self.main_dict[str(selected_system)][str(item)]['Failure Rate']["Nominal"]
1831 
1832  if selected_fr != None and selected_fr != "None":
1833  fr_list.append(selected_fr)
1834 
1835  if object_type == "Serial":
1836  calculate_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
1837 
1838  else:
1839  calculate_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
1840 
1841  return calculate_fr
1842 
1843  except Exception as err:
1844  print("\nError: calculate_selected_module_fr_func\n")
1845  print(err)
1846 
1847 
1848  def main_dict_sub_module_calculate_func(self, selected_system, selected_module):
1849  """
1850  Sub Module Calculation Function
1851  """
1852  try:
1853  selected_module_dict = self.main_dict[str(selected_system)][str(selected_module)]
1854  selected_configuration = dict(selected_module_dict["Configurations"])
1855  del selected_configuration["Configuration Count"]
1856  control_dict = dict()
1857 
1858  if str(selected_configuration) != str(control_dict):
1859  module_depth_level = selected_configuration["Depth Level"]
1860  selected_final_configuration = selected_module_dict["Final Configuration"]
1861 
1862  configuration_list = list(selected_configuration.keys())
1863  self.remove_key(configuration_list)
1864 
1865  sub_module_list = list(selected_module_dict.keys())
1866  self.remove_key(sub_module_list)
1867 
1868  sorted_list = self.sorted_list_for_depth_level(selected_configuration, configuration_list, module_depth_level)
1869 
1870  # Alt katmandakilerin hesabi yapildi
1871  for sub_module in sub_module_list:
1872  self.main_dict_component_calculate_func(selected_system, selected_module, sub_module)
1873 
1874  # Mevcut katmanin isi yapiliyor
1875  for item in sorted_list:
1876  item_sub_module_list = selected_module_dict["Configurations"][str(item)]["Components"]
1877  item_type = selected_module_dict["Configurations"][str(item)]["Type"]
1878  calculate_fr = self.calculate_selected_sub_module_fr_func(selected_system, selected_module, configuration_list, item_sub_module_list, item_type)
1879 
1880  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(item)]["Failure Rate"] = calculate_fr
1881 
1882  configuration_keys = list(self.main_dict[str(selected_system)][str(selected_module)]["Configurations"].keys())
1883  self.remove_key(configuration_keys)
1884 
1885  if selected_final_configuration not in configuration_keys:
1886  if selected_final_configuration not in module_list:
1887  self.main_dict[str(selected_system)][str(selected_module)]["Final Configuration"] = ""
1888  selected_final_configuration == ""
1889 
1890  if selected_final_configuration == "":
1891  selected_module_fr = 0.0
1892 
1893  else:
1894  if selected_final_configuration in configuration_keys:
1895  selected_module_fr = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(selected_final_configuration)]["Failure Rate"]
1896 
1897  else:
1898  selected_module_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_final_configuration)]["Failure Rate"]
1899 
1900  self.main_dict[str(selected_system)][str(selected_module)]["Failure Rate"]["Nominal"] = selected_module_fr
1901 
1902  selected_module_fr = self.main_dict[str(selected_system)][str(selected_module)]["Failure Rate"]["Nominal"]
1903  selected_module_reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, selected_module_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
1904  self.main_dict[str(selected_system)][str(selected_module)]["Reliability"]["Nominal"] = selected_module_reliability
1905 
1906  sensor_list = list(self.temperature_sensor_dict.keys())
1907  sensor_list.remove("System")
1908 
1909  if len(sensor_list) > 0 and str(selected_module) in sensor_list:
1910  module_temperature = float(self.temperature_sensor_dict[str(selected_module)]["Avarage"])
1911  selected_module_temperature_fr = self.fr_calculation_class.failure_rate_calculation_using_temperature_func(selected_module_fr, module_temperature, self.temperature_t0)
1912  self.main_dict[str(selected_system)][str(selected_module)]["Failure Rate"]["Sensor Based"] = selected_module_temperature_fr
1913  selected_module_temperature_reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, selected_module_temperature_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
1914  self.main_dict[str(selected_system)][str(selected_module)]["Reliability"]["Sensor Based"] = selected_module_temperature_reliability
1915  else:
1916  try:
1917  del self.main_dict[str(selected_system)][str(selected_module)]["Failure Rate"]["Sensor Based"]
1918  del self.main_dict[str(selected_system)][str(selected_module)]["Reliability"]["Sensor Based"]
1919 
1920  except KeyError:
1921  pass
1922 
1923  except Exception as err:
1924  print("\nError: main_dict_sub_module_calculate_func\n")
1925  print(err)
1926 
1927 
1928  def calculate_selected_sub_module_fr_func(self, selected_system, selected_module, object_keys, select_sub_module_list, object_type):
1929  """
1930  Selected Sub Module Failure Rate Calculation Function
1931  """
1932  try:
1933  fr_list = list()
1934  calculate_fr = 0.0
1935 
1936  for item in select_sub_module_list:
1937  if item in object_keys:
1938  selected_fr = self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(item)]['Failure Rate']
1939 
1940  if selected_fr != None and selected_fr != "None":
1941  fr_list.append(selected_fr)
1942 
1943  else:
1944  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][str(item)]['Failure Rate']
1945 
1946  if selected_fr != None and selected_fr != "None":
1947  fr_list.append(selected_fr)
1948 
1949  if object_type == "Serial":
1950  calculate_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
1951 
1952  else:
1953  calculate_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
1954 
1955  return calculate_fr
1956 
1957  except Exception as err:
1958  print("\nError: calculate_selected_sub_module_fr_func\n")
1959  print(err)
1960 
1961 
1962  def main_dict_component_calculate_func(self, selected_system, selected_module, selected_sub_module):
1963  """
1964  Component Calculation Function
1965  """
1966  try:
1967  selected_sub_module_dict = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]
1968  selected_configuration = dict(selected_sub_module_dict["Configurations"])
1969  del selected_configuration["Configuration Count"]
1970  control_dict = dict()
1971 
1972  if str(selected_configuration) != str(control_dict):
1973  sub_module_depth_level = selected_configuration["Depth Level"]
1974  selected_final_configuration = selected_sub_module_dict["Final Configuration"]
1975 
1976  configuration_list = list(selected_configuration.keys())
1977  self.remove_key(configuration_list)
1978 
1979  sorted_list = self.sorted_list_for_depth_level(selected_configuration, configuration_list, sub_module_depth_level)
1980 
1981  for item in sorted_list:
1982  item_component_list = selected_sub_module_dict["Configurations"][str(item)]["Components"]
1983  item_type = selected_sub_module_dict["Configurations"][str(item)]["Type"]
1984  calculate_fr = self.calculate_selected_component_fr_func(selected_system, selected_module, selected_sub_module, configuration_list, item_component_list, item_type)
1985 
1986  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(item)]["Failure Rate"] = calculate_fr
1987 
1988  configuration_keys = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"].keys())
1989  self.remove_key(configuration_keys)
1990 
1991  if selected_final_configuration not in configuration_keys:
1992  if selected_final_configuration not in module_list:
1993  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Final Configuration"] = ""
1994  selected_final_configuration == ""
1995 
1996  if selected_final_configuration == "":
1997  selected_sub_module_fr = 0.0
1998 
1999  else:
2000  if selected_final_configuration in configuration_keys:
2001  selected_sub_module_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(selected_final_configuration)]["Failure Rate"]
2002 
2003  else:
2004  selected_sub_module_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(selected_final_configuration)]["Failure Rate"]
2005 
2006  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Failure Rate"] = selected_sub_module_fr
2007 
2008  selected_sub_module_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Failure Rate"]
2009  selected_sub_module_reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, selected_sub_module_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
2010  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Reliability"] = selected_sub_module_reliability
2011 
2012  except Exception as err:
2013  print("\nError: main_dict_component_calculate_func\n")
2014  print(err)
2015 
2016 
2017  def calculate_selected_component_fr_func(self, selected_system, selected_module, selected_sub_module, object_keys, select_component_list, object_type):
2018  """
2019  Selected Component Failure Rate Calculation Function
2020  """
2021  try:
2022  fr_list = list()
2023  calculate_fr = 0.0
2024 
2025  for item in select_component_list:
2026  if item in object_keys:
2027  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(item)]['Failure Rate']
2028 
2029  if selected_fr != None and selected_fr != "None":
2030  fr_list.append(selected_fr)
2031 
2032  else:
2033  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(item)]['Failure Rate']
2034 
2035  if selected_fr != None and selected_fr != "None":
2036  fr_list.append(selected_fr)
2037 
2038  if object_type == "Serial":
2039  calculate_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
2040 
2041  else:
2042  calculate_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
2043 
2044  return calculate_fr
2045 
2046  except Exception as err:
2047  print("\nError: calculate_selected_component_fr_func\n")
2048  print(err)
2049 
2050  @classmethod
2051  def sorted_list_for_depth_level(cls, configuration_dict, configuration_list, depth_level):
2052  """
2053  Sorted List for Depth Level Function
2054  """
2055  try:
2056  sorted_list = list()
2057 
2058  for i in range(depth_level + 1):
2059  for item in configuration_list:
2060  depth = configuration_dict[str(item)]["Depth Level"]
2061 
2062  if depth == i:
2063  sorted_list.append(item)
2064 
2065  return sorted_list
2066 
2067  except Exception as err:
2068  print("\nError: sorted_list_for_depth_level\n")
2069  print(err)
2070 
2071 # "PHM SYSTEM GENERAL CALCULATION FUNCTIONS" - END -
2072 
2073 # "PHM GENERAL SET RESULT FUNCTIONS" - START -
2074 
2076  """
2077  General Set Result Function
2078  """
2079  try:
2080  selected_failure_rate_type = str(self.comboBox_m_sys_select_failure_rate_type.currentText())
2081  selected_reliability_type = str(self.comboBox_m_sys_select_reliability_type.currentText())
2082  selected_module_reliability = str(self.comboBox_m_reliability_module.currentText())
2083  selected_module_reliability_type = str(self.comboBox_m_sys_select_module_reliability_type.currentText())
2084 
2085  if selected_failure_rate_type != "" and selected_failure_rate_type != "None":
2086  system_failure_rate = self.main_dict["System"]["Failure Rate"][str(selected_failure_rate_type)]
2087  self.lineEdit_m_sys_lambda.setText(str(system_failure_rate))
2088 
2089  if selected_reliability_type != "" and selected_reliability_type != "None":
2090  system_reliability = self.main_dict["System"]["Reliability"][str(selected_reliability_type)]
2091  self.lineEdit_m_sys_reliability.setText(str(system_reliability))
2092 
2093  if selected_module_reliability != "" and selected_module_reliability != "None" and selected_module_reliability_type != "" and selected_module_reliability_type != "None":
2094  module_reliability = self.main_dict["System"][str(selected_module_reliability)]['Reliability'][str(selected_module_reliability_type)]
2095  self.lineEdit_m_module_reliability.setText(str(module_reliability))
2096 
2097  else:
2098  module_reliability = 1.0
2099  self.lineEdit_m_module_reliability.setText(str(module_reliability))
2100 
2101  self.phm_gui_time += 1
2102 
2103  except Exception as err:
2104  print("\nError: general_set_result_func\n")
2105  print(err)
2106 
2107 
2109  """
2110  Configuration Setup Set Result Function
2111  """
2115 
2116 
2118  """
2119  Configuration Setup Sub Module Set Result Function
2120  """
2121  try:
2122  selected_system = str(self.comboBox_configuration_st_sc_select_system.currentText())
2123  selected_module = str(self.comboBox_configuration_st_sc_select_module.currentText())
2124  selected_sub_module = str(self.comboBox_configuration_st_sc_select_sub_module.currentText())
2125 
2126  selected_first_component = str(self.comboBox_configuration_select_first_comp.currentText())
2127  selected_second_component = str(self.comboBox_configuration_select_second_comp.currentText())
2128 
2129  if selected_system != "" and selected_system != "None" and selected_module != "" and selected_module != "None" and selected_sub_module != "" and selected_sub_module != "None":
2130  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module]["Failure Rate"]
2131  self.lineEdit_configuration_failure_rate_sub_module.setText(str(selected_fr))
2132 
2133  if selected_first_component != "" and selected_first_component != "None":
2134  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2135 
2136  if selected_first_component in configuration_list:
2137  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module]["Configurations"][str(selected_first_component)]["Failure Rate"]
2138 
2139  else:
2140  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module][str(selected_first_component)]["Failure Rate"]
2141 
2142  self.lineEdit_configuration_failure_rate_first_component.setText(str(selected_fr))
2143 
2144  if selected_second_component != "" and selected_second_component != "None":
2145  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2146 
2147  if selected_second_component in configuration_list:
2148  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module]["Configurations"][str(selected_second_component)]["Failure Rate"]
2149 
2150  else:
2151  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module][str(selected_second_component)]["Failure Rate"]
2152 
2153  self.lineEdit_configuration_failure_rate_second_component.setText(str(selected_fr))
2154 
2155  except Exception as err:
2156  print("\nError: configuration_setup_sub_module_set_result_func\n")
2157  print(err)
2158 
2159 
2161  """
2162  Configuration Setup Module Set Result Function
2163  """
2164  try:
2165  selected_system = str(self.comboBox_configuration_st_ssm_select_system.currentText())
2166  selected_module = str(self.comboBox_configuration_st_ssm_select_module.currentText())
2167 
2168  selected_first_sub_module = str(self.comboBox_configuration_select_first_sub_module.currentText())
2169  selected_second_sub_module = str(self.comboBox_configuration_select_second_sub_module.currentText())
2170 
2171  if selected_system != "" and selected_system != "None" and selected_module != "" and selected_module != "None":
2172  selected_fr = self.main_dict[str(selected_system)][str(selected_module)]["Failure Rate"]["Nominal"]
2173  self.lineEdit_configuration_failure_rate_module.setText(str(selected_fr))
2174 
2175  if selected_first_sub_module != "" and selected_first_sub_module != "None":
2176  configuration_list = self.control_of_configuration_list(selected_system, selected_module)
2177 
2178  if selected_first_sub_module in configuration_list:
2179  selected_fr = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(selected_first_sub_module)]["Failure Rate"]
2180 
2181  else:
2182  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_first_sub_module)]["Failure Rate"]
2183 
2184  self.lineEdit_configuration_failure_rate_first_sub_module.setText(str(selected_fr))
2185 
2186  if selected_second_sub_module != "" and selected_second_sub_module != "None":
2187  configuration_list = self.control_of_configuration_list(selected_system, selected_module)
2188 
2189  if selected_second_sub_module in configuration_list:
2190  selected_fr = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(selected_second_sub_module)]["Failure Rate"]
2191 
2192  else:
2193  selected_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_second_sub_module)]["Failure Rate"]
2194 
2195  self.lineEdit_configuration_failure_rate_second_sub_module.setText(str(selected_fr))
2196 
2197  except Exception as err:
2198  print("\nError: configuration_setup_module_set_result_func\n")
2199  print(err)
2200 
2201 
2203  """
2204  Configuration Setup System Set Result Function
2205  """
2206  try:
2207  selected_system = str(self.comboBox_configuration_st_sm_select_system.currentText())
2208 
2209  selected_first_module = str(self.comboBox_configuration_select_first_module.currentText())
2210  selected_second_module = str(self.comboBox_configuration_select_second_module.currentText())
2211 
2212  if selected_system != "" and selected_system != "None":
2213  selected_fr = self.main_dict[str(selected_system)]["Failure Rate"]["Nominal"]
2214  self.lineEdit_configuration_failure_rate_system.setText(str(selected_fr))
2215 
2216  if selected_first_module != "" and selected_first_module != "None":
2217  configuration_list = self.control_of_configuration_list(selected_system)
2218 
2219  if selected_first_module in configuration_list:
2220  selected_fr = self.main_dict[str(selected_system)]["Configurations"][str(selected_first_module)]["Failure Rate"]["Nominal"]
2221 
2222  else:
2223  selected_fr = self.main_dict[str(selected_system)][str(selected_first_module)]["Failure Rate"]["Nominal"]
2224 
2225  self.lineEdit_configuration_failure_rate_first_module.setText(str(selected_fr))
2226 
2227  if selected_second_module != "" and selected_second_module != "None":
2228  configuration_list = self.control_of_configuration_list(selected_system)
2229 
2230  if selected_second_module in configuration_list:
2231  selected_fr = self.main_dict[str(selected_system)]["Configurations"][str(selected_second_module)]["Failure Rate"]["Nominal"]
2232 
2233  else:
2234  selected_fr = self.main_dict[str(selected_system)][str(selected_second_module)]["Failure Rate"]["Nominal"]
2235 
2236  self.lineEdit_configuration_failure_rate_second_module.setText(str(selected_fr))
2237 
2238  except Exception as err:
2239  print("\nError: configuration_setup_system_set_result_func\n")
2240  print(err)
2241 
2242 # "PHM GENERAL SET RESULT FUNCTIONS" - END -
2243 
2244 # "PHM GENERAL SENSORS FUNCTIONS" - START -
2245 
2247  """
2248  Phm Temperature Sensor Thread Function
2249  """
2250  general_key_list = list(self.temperature_sensor_dict.keys())
2251 
2252  for item in general_key_list:
2253  selected_sensors_number = len(list(self.temperature_sensor_dict[str(item)]["Sensors"].keys()))
2254  result = 0
2255 
2256  if selected_sensors_number > 0:
2257  for key, value in self.temperature_sensor_dict[str(item)]["Sensors"].items():
2258  if str(value["Thread"].data) != "None":
2259  self.temperature_sensor_dict[str(item)]["Sensors"][str(key)]["Value"] = float(value["Thread"].data)
2260  result += float(value["Thread"].data)
2261 
2262  if selected_sensors_number > 1:
2263  self.temperature_sensor_dict[str(item)]["Avarage"] = float(result / selected_sensors_number)
2264 
2265  else:
2266  self.temperature_sensor_dict[str(item)]["Avarage"] = float(result)
2267 
2268 # "PHM GENERAL SENSORS FUNCTIONS" - END -
2269 
2270 # "CONTROL FUNCTIONS OF INDEX CHANGES" - START -
2271 
2272  # CONFIGURATION // SET TYPE
2273 
2275  """
2276  Configuration Set Type Events Func
2277  """
2278  # GENERAL FUNCTIONS
2279  self.system_list_tab_func()
2280  self.module_list_tab_func()
2281  self.sub_module_list_tab_func()
2282  self.combobox_configuration_type()
2283 
2284  # SET MODULE TYPES TAB CONFIGURATION
2285  self.first_module_list_tab_func()
2286  self.second_module_list_tab_func()
2287  self.module_list_widget_func()
2288 
2289  self.comboBox_configuration_st_sm_select_system.currentIndexChanged.connect(self.system_list_control_of_set_module_types_tab)
2290  self.comboBox_configuration_st_sm_select_system.currentIndexChanged.connect(self.system_fr_control)
2291  self.comboBox_configuration_st_sm_select_system.currentIndexChanged.connect(self.convert_configurations_of_modules_into_syntax)
2292  self.comboBox_configuration_select_first_module.currentIndexChanged.connect(self.module_list_control_of_set_module_types_tab)
2293  self.comboBox_configuration_select_second_module.currentIndexChanged.connect(self.module_list_control_of_set_module_types_tab)
2294  self.comboBox_configuration_reliability_model.currentIndexChanged.connect(self.select_reliability_model_func)
2295  self.comboBox_configuration_unit.currentIndexChanged.connect(self.select_phm_unit_func)
2296 
2297  self.pushButton_configuration_set_module_type.clicked.connect(self.create_syntax_of_modules)
2298  self.pushButton_delete_module_config.clicked.connect(self.delete_module_configuration)
2299  self.pushButton_add_module_config.clicked.connect(self.add_module_into_config)
2300  self.pushButton_select_final_configuration_of_system.clicked.connect(self.select_final_configuration_of_system)
2301  self.lineEdit_configuration_reliability_shape_parameter.textChanged.connect(self.set_shape_parameter_func)
2302 
2303  # SET SUB-MODULE TYPES TAB CONFIGURATION
2304  self.first_sub_module_list_tab_func()
2305  self.second_sub_module_list_tab_func()
2306  self.sub_module_list_widget_func()
2307 
2308  # Robot Design Set failure rate from default equipments type
2309  self.comboBox_c_ao_am_select_type.addItems(self.type_list)
2310  self.comboBox_c_ao_asm_sfr_select_type.addItems(self.type_list)
2311  self.comboBox_c_ao_asm_select_type.addItems(self.type_list)
2312  self.comboBox_configuration_st_ssm_select_system.currentIndexChanged.connect(self.module_list_control_of_set_sub_module_types_tab)
2313  self.comboBox_configuration_st_ssm_select_module.currentIndexChanged.connect(self.sub_module_list_control_of_set_sub_module_types_tab)
2314  self.comboBox_configuration_st_ssm_select_module.currentIndexChanged.connect(self.module_fr_control)
2315  self.comboBox_configuration_st_ssm_select_module.currentIndexChanged.connect(self.convert_configurations_of_sub_modules_into_syntax)
2316  self.comboBox_configuration_select_first_sub_module.currentIndexChanged.connect(self.first_sub_module_list_control_of_set_sub_module_types_tab)
2317  self.comboBox_configuration_select_second_sub_module.currentIndexChanged.connect(self.second_sub_module_list_control_of_set_sub_module_types_tab)
2318 
2319  self.pushButton_configuration_set_sub_module_type.clicked.connect(self.create_syntax_of_sub_modules)
2320  self.pushButton_delete_sub_module_config.clicked.connect(self.delete_sub_module_configuration)
2321  self.pushButton_add_sub_module_config.clicked.connect(self.add_sub_module_into_config)
2322  self.pushButton_select_final_configuration_of_module.clicked.connect(self.select_final_configuration_of_module)
2323 
2324  # SET COMPONENT TYPES TAB CONFIGURATION
2325  self.first_component_list_tab_func()
2326  self.second_component_list_tab_func()
2327  self.component_list_widget_func()
2328 
2329  self.comboBox_configuration_st_sc_select_system.currentIndexChanged.connect(self.module_list_control_of_set_component_types_tab)
2330  self.comboBox_configuration_st_sc_select_module.currentIndexChanged.connect(self.sub_module_list_control_of_set_component_types_tab)
2331  self.comboBox_configuration_st_sc_select_sub_module.currentIndexChanged.connect(self.component_list_control_of_set_component_types_tab)
2332  self.comboBox_configuration_st_sc_select_sub_module.currentIndexChanged.connect(self.sub_module_fr_control)
2333  self.comboBox_configuration_st_sc_select_sub_module.currentIndexChanged.connect(self.convert_configurations_of_components_into_syntax)
2334  self.comboBox_configuration_select_first_comp.currentIndexChanged.connect(self.first_component_list_control_of_set_component_types_tab)
2335  self.comboBox_configuration_select_second_comp.currentIndexChanged.connect(self.second_component_list_control_of_set_component_types_tab)
2336 
2337  self.pushButton_configuration_set_comp_type.clicked.connect(self.create_syntax_of_components)
2338  self.pushButton_delete_component_config.clicked.connect(self.delete_component_configuration)
2339  self.pushButton_add_component_config.clicked.connect(self.add_component_into_config)
2340  self.pushButton_select_final_configuration_of_sub_module.clicked.connect(self.select_final_configuration_of_sub_module)
2341 
2342  # CONFIGURATION // ADD OBJECT 2
2344  """
2345  Configuration Add Object 2 Tab Events Func
2346  """
2347  # ADD MODULE TAB CONFIGURATION
2348  self.pushButton_c_ao_am_add_module.clicked.connect(self.add_new_module)
2349  self.pushButton_c_ao_am_delete_module.clicked.connect(self.delete_a_module)
2350  self.lineEdit_c_ao_am_module_fr.textChanged.connect(self.calculate_set_fr_module_total_fr_func)
2351  self.spinBox_c_ao_am_quantity.valueChanged.connect(self.calculate_set_fr_module_total_fr_func)
2352  self.comboBox_c_ao_am_select_type.currentIndexChanged.connect(self.calculate_set_fr_module_total_fr_func)
2353 
2354  # ADD SUB MODULE TAB CONFIGURATION
2355  self.pushButton_c_ao_asm_add_sub_module.clicked.connect(self.add_new_sub_module)
2356  self.comboBox_c_ao_asm_select_module.currentIndexChanged.connect(self.add_sub_module_into_list_widget)
2357  self.lineEdit_c_ao_asm_sub_module_fr.textChanged.connect(self.calculate_set_fr_sub_module_total_fr_func)
2358  self.spinBox_c_ao_asm_sfr_quantity.valueChanged.connect(self.calculate_set_fr_sub_module_total_fr_func)
2359  self.comboBox_c_ao_asm_sfr_select_type.currentIndexChanged.connect(self.calculate_set_fr_sub_module_total_fr_func)
2360  self.groupBox_c_ao_asm_sub_module_fr.clicked.connect(self.sub_module_set_fr_groupbox_control)
2361  self.groupBox_c_ao_asm_default_fr.clicked.connect(self.sub_module_default_equipments_groupbox_control)
2362  self.lineEdit_c_ao_asm_component_fr.textChanged.connect(self.calculate_sub_module_total_fr_func)
2363  self.spinBox_c_ao_asm_quantity.valueChanged.connect(self.calculate_sub_module_total_fr_func)
2364  self.comboBox_c_ao_asm_select_type.currentIndexChanged.connect(self.calculate_sub_module_total_fr_func)
2365  self.pushButton_c_ao_asm_set_equipment.clicked.connect(self.sub_module_add_equipment_func)
2366  self.pushButton_c_ao_asm_delete_sub_module.clicked.connect(self.delete_a_sub_module)
2367 
2368  # ADD COMPONENT TAB CONFIGURATION
2369  self.comboBox_c_ao_ac_select_module.currentIndexChanged.connect(self.add_component_tab_func)
2370  self.pushButton_c_ao_ac_add_component.clicked.connect(self.add_new_component)
2371  self.lineEdit_c_ao_ac_component_fr.textChanged.connect(self.calculate_set_fr_component_total_fr_func)
2372  self.spinBox_c_ao_ac_sfr_quantity.valueChanged.connect(self.calculate_set_fr_component_total_fr_func)
2373  self.groupBox_c_ao_ac_component_fr.clicked.connect(self.component_set_fr_groupbox_control)
2374  self.groupBox_c_ao_ac_default_fr.clicked.connect(self.component_default_equipments_groupbox_control)
2375  self.comboBox_c_ao_ac_select_module.currentIndexChanged.connect(self.add_component_into_list_widget)
2376  self.comboBox_c_ao_ac_select_sub_module.currentIndexChanged.connect(self.add_component_into_list_widget)
2377  self.lineEdit_c_ao_ac_component_fr_2.textChanged.connect(self.calculate_component_total_fr_func)
2378  self.spinBox_c_ao_ac_quantity.valueChanged.connect(self.calculate_component_total_fr_func)
2379  self.pushButton_c_ao_ac_set_equipment.clicked.connect(self.component_add_equipment_func)
2380  self.pushButton_c_ao_ac_delete_component.clicked.connect(self.delete_a_component)
2381 
2382  # ADD COMPONENT ELEMENT TAB CONFIGURATION
2383  self.comboBox_c_ao_ace_select_module.currentIndexChanged.connect(self.add_component_element_tab_func)
2384  self.comboBox_c_ao_ace_select_sub_module.currentIndexChanged.connect(self.add_component_element_tab_func_2)
2385  self.pushButton_c_ao_ace_add_component_element.clicked.connect(self.add_new_custom_component)
2386  self.comboBox_c_ao_ace_select_module.currentIndexChanged.connect(self.add_elements_into_list_widget)
2387  self.comboBox_c_ao_ace_select_sub_module.currentIndexChanged.connect(self.add_elements_into_list_widget)
2388  self.comboBox_c_ao_ace_select_component.currentIndexChanged.connect(self.add_elements_into_list_widget)
2389  self.pushButton_c_ao_ac_set_formula.clicked.connect(self.set_formula_of_component)
2390  self.pushButton_c_ao_ac_set_formula.clicked.connect(self.add_component_into_list_widget)
2391  self.comboBox_c_ao_ace_select_component_2.currentIndexChanged.connect(self.control_component_formula)
2392  self.pushButton_c_ao_ace_delete_element.clicked.connect(self.delete_an_element)
2393  self.pushButton_c_ao_ace_delete_element.clicked.connect(self.add_component_into_list_widget)
2394 
2395  # START PHM - SAVE and LOAD
2397  """
2398  PHM Save And Load Button Function
2399  """
2400  self.pushButton_c_ao_save.clicked.connect(self.save_system_into_file)
2401  self.pushButton_c_ao_load.clicked.connect(self.load_system_from_file)
2402 
2403 # "CONTROL FUNCTIONS OF INDEX CHANGES" - END -
2404 
2405 # CONTROL OF CONFIGURATION LIST - START -
2406 
2408  """
2409  Control of Configuration List Function
2410  """
2411  if len(args) == 3:
2412  configuration_list = list(self.main_dict[str(args[0])][str(args[1])][str(args[2])]["Configurations"].keys())
2413 
2414  elif len(args) == 2:
2415  configuration_list = list(self.main_dict[str(args[0])][str(args[1])]["Configurations"].keys())
2416 
2417  elif len(args) == 1:
2418  configuration_list = list(self.main_dict[str(args[0])]["Configurations"].keys())
2419 
2420  else:
2421  print("\nThe function must have at least 1 input.\n")
2422 
2423  self.remove_key(configuration_list)
2424 
2425  return configuration_list
2426 
2427 # CONTROL OF CONFIGURATION LIST - END -
2428 
2429 # REMOVE KEY FUNCTIONS - START -
2430 
2431  def remove_key(self, temp_list):
2432  """
2433  Remove Key Function
2434  """
2435  self.remove_fr_key(temp_list)
2436  self.remove_reliability_key(temp_list)
2437  self.remove_configurations_key(temp_list)
2438  self.remove_elements_key(temp_list)
2439  self.remove_formula_key(temp_list)
2440  self.remove_key_final_config(temp_list)
2441  self.remove_depth_level_key(temp_list)
2442  self.remove_configuration_count_key(temp_list)
2443  temp_list.sort()
2444 
2445  @classmethod
2446  def remove_configuration_count_key(cls, temp_list):
2447  """
2448  Remove "Configuration Count" Key Function
2449  """
2450  if "Configuration Count" in temp_list:
2451  temp_list.remove("Configuration Count")
2452 
2453  else:
2454  pass
2455 
2456  @classmethod
2457  def remove_fr_key(cls, temp_list):
2458  """
2459  Remove "Failure Rate Key" Function
2460  """
2461  if "Failure Rate" in temp_list:
2462  temp_list.remove("Failure Rate")
2463 
2464  else:
2465  pass
2466 
2467  @classmethod
2468  def remove_reliability_key(cls, temp_list):
2469  """
2470  Remove "Reliability" Function
2471  """
2472  if "Reliability" in temp_list:
2473  temp_list.remove("Reliability")
2474 
2475  else:
2476  pass
2477 
2478  @classmethod
2479  def remove_depth_level_key(cls, temp_list):
2480  """
2481  Remove "Depth Level" Function
2482  """
2483  if "Depth Level" in temp_list:
2484  temp_list.remove("Depth Level")
2485 
2486  else:
2487  pass
2488 
2489  @classmethod
2490  def remove_configurations_key(cls, temp_list):
2491  """
2492  Remove "Configurations" Function
2493  """
2494  if "Configurations" in temp_list:
2495  temp_list.remove("Configurations")
2496 
2497  else:
2498  pass
2499 
2500  @classmethod
2501  def remove_elements_key(cls, temp_list):
2502  """
2503  Remove "Elements" Function
2504  """
2505  if "Elements" in temp_list:
2506  temp_list.remove("Elements")
2507 
2508  else:
2509  pass
2510 
2511  @classmethod
2512  def remove_formula_key(cls, temp_list):
2513  """
2514  Remove "Formula" Function
2515  """
2516  if "Formula" in temp_list:
2517  temp_list.remove("Formula")
2518 
2519  else:
2520  pass
2521 
2522  @classmethod
2523  def remove_key_final_config(cls, temp_list):
2524  """
2525  Remove "Final Configuration" Function
2526  """
2527  if "Final Configuration" in temp_list:
2528  temp_list.remove("Final Configuration")
2529 
2530  else:
2531  pass
2532 
2533 # REMOVE KEY FUNCTIONS - END -
2534 
2535 # PHM START MAIN DICT - START -
2536 
2538  """
2539  Start PHM Gui Main Dict Function
2540  """
2541  try:
2542  current_workspace = self.get_current_workspace()
2543  file_dir = "phm_start/params/"
2544  temp_file_name = "last_configurations"
2545  file_name = str(str(current_workspace) + str(file_dir) + str(temp_file_name) + '.yaml')
2546 
2547  last_saved_dict = dict(self.read_data_from_file(file_name))
2548  last_saved_dict_keys = list(last_saved_dict["System"].keys())
2549  self.remove_key(last_saved_dict_keys)
2550 
2551  if last_saved_dict_keys:
2552  self.main_dict["System"].update(last_saved_dict["System"])
2555 
2556  else:
2557  self.main_dict["System"] = {"Reliability": {"Nominal": 0.0, "Sensor Based": 0.0}, "Failure Rate": {"Nominal": 0.0, "Sensor Based": 0.0}, "Configurations": {'Configuration Count': {'Serial': 0, 'Parallel': 0}}, "Final Configuration": str()}
2558 
2559  except Exception:
2560  self.main_dict["System"] = {"Reliability": {"Nominal": 0.0, "Sensor Based": 0.0}, "Failure Rate": {"Nominal": 0.0, "Sensor Based": 0.0}, "Configurations": {'Configuration Count': {'Serial': 0, 'Parallel': 0}}, "Final Configuration": str()}
2561 
2562 # PHM START MAIN DICT - END -
2563 
2564 # "CONFIGURATION // SET TYPE GENERAL FUNCTIONS" - START -
2565 
2567  """
2568  System List Tab Function
2569  """
2570  # Set Module tab
2571  self.comboBox_configuration_st_sm_select_system.clear()
2572  self.comboBox_configuration_st_sm_select_system.addItem("None")
2573 
2574  # Set Sub-Module tab
2575  self.comboBox_configuration_st_ssm_select_system.clear()
2576  self.comboBox_configuration_st_ssm_select_system.addItem("None")
2577 
2578  # Set Component tab
2579  self.comboBox_configuration_st_sc_select_system.clear()
2580  self.comboBox_configuration_st_sc_select_system.addItem("None")
2581 
2582  system_list = list(self.main_dict.keys())
2583  self.remove_key(system_list)
2584 
2585  self.comboBox_configuration_st_sm_select_system.addItems(sorted(system_list))
2586  self.comboBox_configuration_st_ssm_select_system.addItems(sorted(system_list))
2587  self.comboBox_configuration_st_sc_select_system.addItems(sorted(system_list))
2588 
2589 
2591  """
2592  Module List Tab Function
2593  """
2594  # Set Sub-Module tab
2595  self.comboBox_configuration_st_ssm_select_module.clear()
2596  self.comboBox_configuration_st_ssm_select_module.addItem("None")
2597 
2598  # Set Component tab
2599  self.comboBox_configuration_st_sc_select_module.clear()
2600  self.comboBox_configuration_st_sc_select_module.addItem("None")
2601 
2602 
2604  """
2605  Sub Module List Tab Function
2606  """
2607  # Set Component tab
2608  self.comboBox_configuration_st_sc_select_sub_module.clear()
2609  self.comboBox_configuration_st_sc_select_sub_module.addItem("None")
2610 
2611 
2613  """
2614  Configuration Type Function
2615  """
2616  # Set Module tab
2617  self.comboBox_configuration_type_of_module.clear()
2618  self.comboBox_configuration_type_of_module.addItems(self.type_list)
2619 
2620  # Set Sub-Module tab
2621  self.comboBox_configuration_type_of_sub_module.clear()
2622  self.comboBox_configuration_type_of_sub_module.addItems(self.type_list)
2623 
2624  # Set Component tab
2625  self.comboBox_configuration_type_of_component.clear()
2626  self.comboBox_configuration_type_of_component.addItems(self.type_list)
2627 
2628  @classmethod
2629  def check_type(cls, configuration_all):
2630  """
2631  Check Type Function
2632  """
2633  if 'series' in configuration_all:
2634  type_value = 'series'
2635 
2636  elif 'parallel' in configuration_all:
2637  type_value = 'parallel'
2638 
2639  return type_value
2640 
2641 # "CONFIGURATION // SET TYPE GENERAL FUNCTIONS" - END -
2642 
2643 # "SAVE - LOAD BUTTONS CONTROL" - START -
2644 
2646  """
2647  Save System Into File Function
2648  """
2649  main_dict_keys = list(self.main_dict["System"].keys())
2650  self.remove_key(main_dict_keys)
2651 
2652  if main_dict_keys:
2653  file_dir = "phm_start/params/"
2654  now = datetime.now()
2655  dt_string = now.strftime("%Y_%m_%d_-_%H_%M_%S")
2656  temp_file_name = str("phm_configurations_" + str(dt_string))
2657  temp_data = self.main_dict
2658 
2659  self.fill_the_file_with_data(file_dir, temp_file_name, temp_data)
2660  self.pushButton_c_ao_load.setEnabled(True)
2661 
2662  else:
2663  print("\nPlease enter the data.\n")
2664 
2665 
2667  """
2668  Load System From File Function
2669  """
2670  try:
2671  select_yaml_files = SelectFileGui.get_file_path(is_app=True, caption="Select yaml file", filefilter="*yaml")
2672 
2673  if not select_yaml_files:
2674  print("\nError: Please select a yaml file.\n")
2675  sys.exit()
2676 
2677  selected_file_list = str(select_yaml_files[0]).split("'")
2678  selected_file = selected_file_list[1]
2680  temp_loaded_object_keys = list(self.configuration_loaded_object_dict["System"].keys())
2681 
2682  if temp_loaded_object_keys:
2683  self.main_dict["System"].update(self.configuration_loaded_object_dict["System"])
2684 
2687  self.pushButton_c_ao_load.setEnabled(False)
2690 
2691  else:
2692  print("\nPlease enter the data.\n")
2693 
2694  except Exception as err:
2695  print("\nPlease enter the data.\n")
2696  print(err)
2697 
2698 # "SAVE - LOAD BUTTONS CONTROL" - END -
2699 
2700 # "CONFIGURATION // SET TYPE // SET COMPONENT TYPES FUNCTIONS" - START -
2701 
2703  """
2704  First Component List Tab Function
2705  """
2706  self.comboBox_configuration_select_first_comp.clear()
2707  self.comboBox_configuration_select_first_comp.addItem("None")
2708 
2709 
2711  """
2712  Second Component List Tab Function
2713  """
2714  self.comboBox_configuration_select_second_comp.clear()
2715  self.comboBox_configuration_select_second_comp.addItem("None")
2716 
2717 
2719  """
2720  Component List Widget Function
2721  """
2722  self.listWidget_components.clear()
2723  self.listWidget_configurations_of_components.clear()
2724 
2725 
2727  """
2728  Module List Control of Set Component Types Tab Function
2729  """
2730  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2731  self.comboBox_configuration_st_sc_select_module.clear()
2732 
2733  if selected_system != "None" and selected_system != "":
2734  module_list = list(self.main_dict[str(selected_system)].keys())
2735  self.remove_key(module_list)
2736  self.comboBox_configuration_st_sc_select_module.addItems(module_list)
2737 
2738 
2740  """
2741  Sub Module List Control of Set Component Types Tab Function
2742  """
2743  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2744  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2745 
2746  self.comboBox_configuration_st_sc_select_sub_module.clear()
2747 
2748  if selected_system != "None" and selected_module != "None" and selected_system != "" and selected_module != "":
2749  sub_module_list = list(self.main_dict[str(selected_system)][str(selected_module)].keys())
2750  self.remove_key(sub_module_list)
2751  self.comboBox_configuration_st_sc_select_sub_module.addItems(sub_module_list)
2752 
2753 
2755  """
2756  Component List Control of Set Component Types Tab Function
2757  """
2758  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2759  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2760  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2761 
2762  self.comboBox_configuration_select_first_comp.clear()
2763  self.comboBox_configuration_select_second_comp.clear()
2764  self.lineEdit_configuration_failure_rate_first_component.clear()
2765  self.lineEdit_configuration_failure_rate_second_component.clear()
2766  self.lineEdit_configuration_first_component.clear()
2767  self.lineEdit_configuration_second_component.clear()
2768  self.listWidget_components.clear()
2769 
2770  if ((selected_system and selected_module and selected_sub_module) != "None") and ((selected_system and selected_module and selected_sub_module) != ""):
2771  component_list = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)].keys())
2772  self.remove_key(component_list)
2773  configuration_list = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'].keys())
2774  self.remove_key(configuration_list)
2775  component_list.extend(configuration_list)
2776 
2777  self.comboBox_configuration_select_first_comp.addItems(component_list)
2778  self.comboBox_configuration_select_second_comp.addItems(component_list)
2779  self.listWidget_components.addItems(sorted(component_list))
2780 
2781  else:
2782  self.comboBox_configuration_select_first_comp.clear()
2783  self.comboBox_configuration_select_second_comp.clear()
2784  self.listWidget_components.clear()
2785 
2786 
2788  """
2789  Sub Module Failure Rate Control Function
2790  """
2791  self.lineEdit_configuration_failure_rate_sub_module.clear()
2792  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2793  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2794  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2795 
2796  if ((selected_system and selected_module and selected_sub_module) != "") and ((selected_system and selected_module and selected_sub_module) != "None"):
2797  selected_sub_module_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Failure Rate']
2798  self.lineEdit_configuration_failure_rate_sub_module.setText(str(selected_sub_module_fr))
2799 
2800 
2802  """
2803  Convert Configurations of Components Into Syntax Function
2804  """
2805  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2806  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2807  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2808 
2809  self.listWidget_configurations_of_components.clear()
2810 
2811  if ((selected_system and selected_module and selected_sub_module) != "") and ((selected_system and selected_module and selected_sub_module) != "None"):
2812  configuraiton_list = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"].keys())
2813  self.remove_key(configuraiton_list)
2814  syntax_list = list()
2815 
2816  for configuration in configuraiton_list:
2817  type_value = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(configuration)]["Type"]
2818  component_list = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(configuration)]["Components"])
2819  syntax_name = str(configuration)
2820 
2821  if type_value == "Serial":
2822  temp_syntax = str()
2823 
2824  for component in component_list:
2825  temp_syntax += str(component) + ', '
2826 
2827  length = len(temp_syntax)
2828  temp_syntax = temp_syntax[:length-2]
2829  syntax = str(syntax_name) + ' = ' + 'series(' + str(temp_syntax) + ')'
2830 
2831  elif type_value == 'Parallel':
2832  temp_syntax = str()
2833 
2834  for component in component_list:
2835  temp_syntax += str(component) + ', '
2836 
2837  length = len(temp_syntax)
2838  temp_syntax = temp_syntax[:length-2]
2839  syntax = str(syntax_name) + ' = ' + 'parallel(' + str(temp_syntax) + ')'
2840 
2841  syntax_list.append(syntax)
2842 
2843  self.listWidget_configurations_of_components.addItems(sorted(syntax_list))
2844 
2845 
2847  """
2848  First Component List Control of Set Component Types Tab Function
2849  """
2850  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2851  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2852  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2853 
2854  if ((selected_system and selected_sub_module and selected_module) != "None") and ((selected_system and selected_sub_module and selected_module) != ""):
2855  component1 = self.comboBox_configuration_select_first_comp.currentText()
2856  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2857 
2858  if component1 != "None" and component1 != "":
2859  self.lineEdit_configuration_first_component.setText(str(component1))
2860 
2861  if component1 in configuration_list:
2862  component1_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module]["Configurations"][str(component1)]["Failure Rate"]
2863 
2864  else:
2865  component1_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module][str(component1)]['Failure Rate']
2866 
2867  self.lineEdit_configuration_failure_rate_first_component.setText(str(component1_fr))
2868 
2869 
2871  """
2872  Second Component List Control of Set Component Types Tab Function
2873  """
2874  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2875  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2876  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2877 
2878  if ((selected_system and selected_sub_module and selected_module) != "None") and ((selected_system and selected_sub_module and selected_module) != ""):
2879  component2 = self.comboBox_configuration_select_second_comp.currentText()
2880  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2881 
2882  if component2 != "None" and component2 != "":
2883  self.lineEdit_configuration_second_component.setText(str(component2))
2884 
2885  if component2 in configuration_list:
2886  component2_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module]["Configurations"][str(component2)]["Failure Rate"]
2887 
2888  else:
2889  component2_fr = self.main_dict[str(selected_system)][str(selected_module)][selected_sub_module][str(component2)]['Failure Rate']
2890 
2891  self.lineEdit_configuration_failure_rate_second_component.setText(str(component2_fr))
2892 
2893 
2895  """
2896  Create Syntax of Components Function
2897  """
2898  type_value = self.comboBox_configuration_type_of_component.currentText()
2899  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2900  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2901  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2902  component1 = self.lineEdit_configuration_first_component.text()
2903  component2 = self.lineEdit_configuration_second_component.text()
2905 
2906  if type_value != "":
2907  new_config_name = str()
2908  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"]["Configuration Count"][str(type_value)] += 1
2909  selected_configuration_count = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"]["Configuration Count"][str(type_value)]
2910 
2911  if type_value == 'Serial':
2912  s_name = 's' + str(selected_configuration_count)
2913  new_config_name = s_name
2914  s_content = 'series(' + str(component1) + ', ' + str(component2) + ')'
2916 
2917  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(s_name)] = None
2918  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(s_name)] = {'Depth Level': level, 'Failure Rate': serial_fr, 'Type': str(type_value), 'Components': [str(component1), str(component2)]}
2919 
2920  self.listWidget_configurations_of_components.addItem(str(s_name + ' = ' + s_content))
2921 
2922  elif type_value == 'Parallel':
2923  p_name = 'p' + str(selected_configuration_count)
2924  new_config_name = p_name
2925  p_content = 'parallel(' + str(component1) + ', ' + str(component2) + ')'
2927 
2928  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(p_name)] = None
2929  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(p_name)] = {'Depth Level': level, 'Failure Rate': parallel_fr, 'Type': str(type_value), 'Components': [str(component1), str(component2)]}
2930 
2931  self.listWidget_configurations_of_components.addItem(str(p_name + ' = ' + p_content))
2932 
2934  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"]["Depth Level"] = max_level
2935 
2936  self.comboBox_configuration_select_first_comp.addItem(str(new_config_name))
2937  self.comboBox_configuration_select_second_comp.addItem(str(new_config_name))
2938  self.listWidget_components.addItem(str(new_config_name))
2939 
2940 
2942  """
2943  Calculate Serial Parallel Failure Rate Value of Components Function
2944  """
2945  type_value = self.comboBox_configuration_type_of_component.currentText()
2946  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2947  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2948  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2949 
2950  component1 = self.lineEdit_configuration_first_component.text()
2951  component2 = self.lineEdit_configuration_second_component.text()
2952 
2953  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2954 
2955  if ((component1 and component2) != "None") and ((component1 and component2) != ""):
2956  if component1 in configuration_list:
2957  component1_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(component1)]['Failure Rate']
2958 
2959  else:
2960  component1_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(component1)]['Failure Rate']
2961 
2962  if component2 in configuration_list:
2963  component2_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(component2)]['Failure Rate']
2964 
2965  else:
2966  component2_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(component2)]['Failure Rate']
2967 
2968  fr_list = list()
2969  fr_list = [component1_fr, component2_fr]
2970 
2971  if type_value == "Serial":
2972  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
2973  temp_fr = serial_fr
2974 
2975  elif type_value == "Parallel":
2976  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
2977  temp_fr = parallel_fr
2978 
2979  return temp_fr
2980 
2981 
2983  """
2984  Calculate Depth Level of Component Configs Function
2985  """
2986  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
2987  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
2988  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
2989 
2990  component1 = self.lineEdit_configuration_first_component.text()
2991  component2 = self.lineEdit_configuration_second_component.text()
2992 
2993  sub_module_dict = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]
2994  configuration_list = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
2995 
2996  if (component1 in configuration_list) and (component2 not in configuration_list):
2997  old_level = sub_module_dict["Configurations"][str(component1)]["Depth Level"]
2998  level = old_level + 1
2999 
3000  elif (component2 in configuration_list) and (component1 not in configuration_list):
3001  old_level = sub_module_dict["Configurations"][str(component2)]["Depth Level"]
3002  level = old_level + 1
3003 
3004  elif (component1 and component2) in configuration_list:
3005  old_level1 = sub_module_dict["Configurations"][str(component1)]["Depth Level"]
3006  old_level2 = sub_module_dict["Configurations"][str(component2)]["Depth Level"]
3007  old_level = max(old_level1, old_level2)
3008  level = old_level + 1
3009 
3010  else:
3011  level = 0
3012 
3013  return level
3014 
3015 
3017  """
3018  Delete Component Configuration Function
3019  """
3020  try:
3021  selected_config_item = self.listWidget_configurations_of_components.selectedItems()
3022  configuration = self.listWidget_configurations_of_components.currentItem().text()
3023  ind = configuration.find(' =')
3024  configuration_name = configuration[:ind]
3025 
3026  # Remove selected configuration item from listWidget_components list.
3027  for cnt in range(self.listWidget_components.count()):
3028  if self.listWidget_components.item(cnt) != None:
3029  if str(self.listWidget_components.item(cnt).text()) == str(configuration_name):
3030  self.listWidget_components.takeItem(cnt)
3031 
3032  else:
3033  continue
3034 
3035  # Remove selected configuration item from listWidget_configuration list.
3036  for item in selected_config_item:
3037  self.listWidget_configurations_of_components.takeItem(self.listWidget_configurations_of_components.row(item))
3038 
3039  # Remove selected configuration from general_dict, also.
3040  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
3041  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
3042  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
3043 
3044  del self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(configuration_name)]
3045  self.delete_component_from_configuration_func(selected_module, selected_sub_module, configuration_name)
3046 
3047  except AttributeError:
3048  print("\nNot found an object to delete.\n")
3049 
3050 
3052  """
3053  Add Component Into Config Function
3054  """
3055  selected_component = self.listWidget_components.currentItem().text()
3056  selected_configuration = self.listWidget_configurations_of_components.currentItem().text()
3057  ind = selected_configuration.find(' =')
3058  selected_configuration_name = selected_configuration[:ind]
3059 
3060  if selected_component != "None" and selected_configuration != "None":
3061  new_config = selected_configuration[:-1] + ", " + selected_component + ")"
3062 
3063  for item in self.listWidget_configurations_of_components.selectedItems():
3064  item.setText(new_config)
3065 
3066  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
3067  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
3068  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
3069 
3070  component_list = list(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(selected_configuration_name)]['Components'])
3071  component_list.append(str(selected_component))
3072 
3073  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(selected_configuration_name)]['Components'] = component_list
3074 
3075  fr_list = list()
3076  configuration_list_of_components = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
3077 
3078  for component in component_list:
3079  if component in configuration_list_of_components:
3080  fr_list.append(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Configurations"][str(component)]['Failure Rate'])
3081  else:
3082  fr_list.append(self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(component)]['Failure Rate'])
3083 
3084  type_value = self.check_type(selected_configuration)
3085 
3086  if type_value == 'series':
3087  calculated_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
3088 
3089  elif type_value == 'parallel':
3090  calculated_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
3091 
3092  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(selected_configuration_name)]['Failure Rate'] = calculated_fr
3093 
3094  level = self.add_component_calculate_depth_level_of_configurations(selected_configuration_name)
3095  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(selected_configuration_name)]['Depth Level'] = level
3096 
3098  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations']['Depth Level'] = max_level
3099 
3100 
3101  def add_component_calculate_depth_level_of_configurations(self, selected_configuration_name):
3102  """
3103  Add Component Calculate Depth Level of Configurations
3104  """
3105  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
3106  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
3107  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
3108 
3109  sub_module_dict = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]
3110  component_list = list(sub_module_dict["Configurations"][str(selected_configuration_name)]["Components"])
3111 
3112  level_list = list()
3113  configuration_list_of_components = self.control_of_configuration_list(selected_system, selected_module, selected_sub_module)
3114 
3115  for item in component_list:
3116  if item not in configuration_list_of_components:
3117  level = 0
3118 
3119  else:
3120  level = sub_module_dict["Configurations"][str(item)]["Depth Level"]
3121  level_list.append(level)
3122 
3123  max_level = max(level_list) + 1
3124 
3125  return max_level
3126 
3127 
3129  """
3130  Find Max Depth Level of Component Configs Function
3131  """
3132  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
3133  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
3134  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
3135 
3136  if ((selected_system and selected_module and selected_sub_module) != "") and ((selected_system and selected_module and selected_sub_module) != "None"):
3137  sub_module_dict = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]
3138  configuration_list = list(sub_module_dict["Configurations"].keys())
3139  self.remove_key(configuration_list)
3140  level_list = list()
3141 
3142  for item in configuration_list:
3143  level = sub_module_dict["Configurations"][str(item)]["Depth Level"]
3144  level_list.append(level)
3145 
3146  return max(level_list)
3147 
3148 
3150  """
3151  Select Final Configuration of Sub Module Function
3152  """
3153  try:
3154  selected_system = self.comboBox_configuration_st_sc_select_system.currentText()
3155  selected_module = self.comboBox_configuration_st_sc_select_module.currentText()
3156  selected_sub_module = self.comboBox_configuration_st_sc_select_sub_module.currentText()
3157  configuration_count = self.listWidget_configurations_of_components.count()
3158 
3159  if configuration_count > 0:
3160  selected_final_configuration = self.listWidget_configurations_of_components.currentItem().text()
3161  ind = selected_final_configuration.find(' =')
3162  selected_final_configuration_name = selected_final_configuration[:ind]
3163  selected_final_configuration_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Configurations'][str(selected_final_configuration_name)]['Failure Rate']
3164 
3165  else:
3166  selected_final_configuration_name = self.listWidget_components.currentItem().text()
3167  selected_final_configuration_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)][str(selected_final_configuration_name)]['Failure Rate']
3168 
3169  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]["Final Configuration"] = str(selected_final_configuration_name)
3170  self.main_dict[str(selected_system)][str(selected_module)][str(selected_sub_module)]['Failure Rate'] = selected_final_configuration_fr
3171 
3172  self.lineEdit_configuration_failure_rate_sub_module.setText(str(selected_final_configuration_fr))
3174 
3175  except Exception as err:
3176  print("\nError: select_final_configuration_of_sub_module\n")
3177  print(err)
3178 
3179 # "CONFIGURATION // SET TYPE // SET COMPONENT TYPES FUNCTIONS" - END -
3180 
3181 # "CONFIGURATION // SET TYPE // SET SUB-MODULE TYPES FUNCTIONS" - START -
3182 
3184  """
3185  First Sub Module List Tab Function
3186  """
3187  self.comboBox_configuration_select_first_sub_module.clear()
3188  self.comboBox_configuration_select_first_sub_module.addItem("None")
3189 
3190 
3192  """
3193  Second Sub Module List Tab Function
3194  """
3195  self.comboBox_configuration_select_second_sub_module.clear()
3196  self.comboBox_configuration_select_second_sub_module.addItem("None")
3197 
3198 
3200  """
3201  Sub Module List Widget Function
3202  """
3203  self.listWidget_sub_modules.clear()
3204  self.listWidget_configurations_of_sub_modules.clear()
3205 
3206 
3208  """
3209  Module List Control of Set Sub Module Types Tab Function
3210  """
3211  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3212 
3213  self.comboBox_configuration_st_ssm_select_module.clear()
3214 
3215  if selected_system != "None" and selected_system != "":
3216  module_list = list(self.main_dict[str(selected_system)].keys())
3217  self.remove_key(module_list)
3218 
3219  self.comboBox_configuration_st_ssm_select_module.addItems(module_list)
3220 
3221 
3223  """
3224  Sub Module List Control of Set Sub Module Types Tab Function
3225  """
3226  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3227  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3228 
3229  self.comboBox_configuration_select_first_sub_module.clear()
3230  self.comboBox_configuration_select_second_sub_module.clear()
3231  self.listWidget_sub_modules.clear()
3232  self.lineEdit_configuration_failure_rate_first_sub_module.clear()
3233  self.lineEdit_configuration_failure_rate_second_sub_module.clear()
3234  self.lineEdit_configuration_first_sub_module.clear()
3235  self.lineEdit_configuration_second_sub_module.clear()
3236 
3237  if ((selected_system and selected_module) != "None") and ((selected_system and selected_module) != ""):
3238  sub_module_list = list(self.main_dict[str(selected_system)][str(selected_module)].keys())
3239  self.remove_key(sub_module_list)
3240 
3241  if "Configurations" in self.main_dict[str(selected_system)][str(selected_module)]:
3242  configuration_list = list(self.main_dict[str(selected_system)][str(selected_module)]["Configurations"].keys())
3243 
3244  else:
3245  configuration_list = list()
3246 
3247  self.remove_key(configuration_list)
3248  sub_module_list.extend(configuration_list)
3249 
3250  self.comboBox_configuration_select_first_sub_module.addItems(sub_module_list)
3251  self.comboBox_configuration_select_second_sub_module.addItems(sub_module_list)
3252  self.listWidget_sub_modules.addItems(sorted(sub_module_list))
3253 
3254  else:
3255  self.comboBox_configuration_select_first_sub_module.clear()
3256  self.comboBox_configuration_select_second_sub_module.clear()
3257  self.listWidget_sub_modules.clear()
3258 
3259 
3261  """
3262  Module Failure Rate Control Function
3263  """
3264  self.lineEdit_configuration_failure_rate_module.clear()
3265 
3266  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3267  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3268 
3269  if ((selected_system and selected_module) != "") and ((selected_system and selected_module) != "None"):
3270  selected_module_fr = self.main_dict[str(selected_system)][str(selected_module)]['Failure Rate']["Nominal"]
3271  self.lineEdit_configuration_failure_rate_module.setText(str(selected_module_fr))
3272 
3273 
3275  """
3276  Convert Configurations of Sub Modules Into Syntax Function
3277  """
3278  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3279  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3280 
3281  self.listWidget_configurations_of_sub_modules.clear()
3282 
3283  if ((selected_system and selected_module) != "") and ((selected_system and selected_module) != "None"):
3284  if "Configurations" in self.main_dict[str(selected_system)][str(selected_module)]:
3285  configuraiton_list = list(self.main_dict[str(selected_system)][str(selected_module)]["Configurations"].keys())
3286  self.remove_key(configuraiton_list)
3287  syntax_list = list()
3288 
3289  for configuration in configuraiton_list:
3290  type_value = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(configuration)]["Type"]
3291  component_list = list(self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(configuration)]["Components"])
3292  syntax_name = str(configuration)
3293 
3294  if type_value == "Serial":
3295  temp_syntax = str()
3296 
3297  for component in component_list:
3298  temp_syntax += str(component) + ', '
3299 
3300  length = len(temp_syntax)
3301  temp_syntax = temp_syntax[:length-2]
3302  syntax = str(syntax_name) + ' = ' + 'series(' + str(temp_syntax) + ')'
3303 
3304  elif type_value == 'Parallel':
3305  temp_syntax = str()
3306 
3307  for component in component_list:
3308  temp_syntax += str(component) + ', '
3309 
3310  length = len(temp_syntax)
3311  temp_syntax = temp_syntax[:length-2]
3312  syntax = str(syntax_name) + ' = ' + 'parallel(' + str(temp_syntax) + ')'
3313 
3314  syntax_list.append(syntax)
3315 
3316  self.listWidget_configurations_of_sub_modules.addItems(sorted(syntax_list))
3317 
3318 
3320  """
3321  First Sub Module List Control of Set Sub Module Types Tab Function
3322  """
3323  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3324  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3325 
3326  if ((selected_system and selected_module) != "None") and ((selected_system and selected_module) != ""):
3327  sub_module1 = self.comboBox_configuration_select_first_sub_module.currentText()
3328  configuration_list = self.control_of_configuration_list(selected_system, selected_module)
3329 
3330  if sub_module1 != "None" and sub_module1 != "":
3331  self.lineEdit_configuration_first_sub_module.setText(str(sub_module1))
3332 
3333  if sub_module1 in configuration_list:
3334  sub_module1_fr = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(sub_module1)]["Failure Rate"]
3335 
3336  else:
3337  sub_module1_fr = self.main_dict[str(selected_system)][str(selected_module)][str(sub_module1)]['Failure Rate']
3338 
3339  self.lineEdit_configuration_failure_rate_first_sub_module.setText(str(sub_module1_fr))
3340 
3341 
3343  """
3344  Second Sub Module List Control of Set Sub Module Types Tab Function
3345  """
3346  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3347  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3348 
3349  if ((selected_system and selected_module) != "None") and ((selected_system and selected_module) != ""):
3350  sub_module2 = self.comboBox_configuration_select_second_sub_module.currentText()
3351  configuration_list = self.control_of_configuration_list(selected_system, selected_module)
3352 
3353  if sub_module2 != "None" and sub_module2 != "":
3354  self.lineEdit_configuration_second_sub_module.setText(str(sub_module2))
3355 
3356  if sub_module2 in configuration_list:
3357  sub_module2_fr = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(sub_module2)]["Failure Rate"]
3358 
3359  else:
3360  sub_module2_fr = self.main_dict[str(selected_system)][str(selected_module)][str(sub_module2)]['Failure Rate']
3361 
3362  self.lineEdit_configuration_failure_rate_second_sub_module.setText(str(sub_module2_fr))
3363 
3364 
3366  """
3367  Create Syntax of Sub Modules Function
3368  """
3369  type_value = self.comboBox_configuration_type_of_sub_module.currentText()
3370  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3371  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3372  sub_module1 = self.lineEdit_configuration_first_sub_module.text()
3373  sub_module2 = self.lineEdit_configuration_second_sub_module.text()
3374 
3376 
3377  if type_value != "":
3378  new_config_name = str()
3379  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"]["Configuration Count"][str(type_value)] += 1
3380  selected_configuration_count = self.main_dict[str(selected_system)][str(selected_module)]["Configurations"]["Configuration Count"][str(type_value)]
3381 
3382  if type_value == 'Serial':
3383  s_name = 's' + str(selected_configuration_count)
3384  new_config_name = s_name
3385  s_content = 'series(' + str(sub_module1) + ', ' + str(sub_module2) + ')'
3387 
3388  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(s_name)] = None
3389  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(s_name)] = {'Depth Level': level, 'Failure Rate': serial_fr, 'Type': str(type_value), 'Components': [str(sub_module1), str(sub_module2)]}
3390  self.listWidget_configurations_of_sub_modules.addItem(str(s_name + ' = ' + s_content))
3391 
3392  elif type_value == 'Parallel':
3393  p_name = 'p' + str(selected_configuration_count)
3394  new_config_name = p_name
3395  p_content = 'parallel(' + str(sub_module1) + ', ' + str(sub_module2) + ')'
3397 
3398  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(p_name)] = None
3399  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(p_name)] = {'Depth Level': level, 'Failure Rate': parallel_fr, 'Type': str(type_value), 'Components': [str(sub_module1), str(sub_module2)]}
3400  self.listWidget_configurations_of_sub_modules.addItem(str(p_name + ' = ' + p_content))
3401 
3403  self.main_dict[str(selected_system)][str(selected_module)]["Configurations"]["Depth Level"] = max_level
3404 
3405  self.comboBox_configuration_select_first_sub_module.addItem(str(new_config_name))
3406  self.comboBox_configuration_select_second_sub_module.addItem(str(new_config_name))
3407  self.listWidget_sub_modules.addItem(str(new_config_name))
3408 
3409 
3411  """
3412  Calculate Serial Parallel Failure Rate Value of Sub Modules Function
3413  """
3414  type_value = self.comboBox_configuration_type_of_sub_module.currentText()
3415  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3416  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3417  sub_module1 = self.lineEdit_configuration_first_sub_module.text()
3418  sub_module2 = self.lineEdit_configuration_second_sub_module.text()
3419 
3420  configuration_list = self.control_of_configuration_list(selected_system, selected_module)
3421 
3422  if ((sub_module1 and sub_module2) != "None") and ((sub_module1 and sub_module2) != ""):
3423  if sub_module1 in configuration_list:
3424  sub_module1_fr = self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(sub_module1)]['Failure Rate']
3425 
3426  else:
3427  sub_module1_fr = self.main_dict[str(selected_system)][str(selected_module)][str(sub_module1)]['Failure Rate']
3428 
3429  if sub_module2 in configuration_list:
3430  sub_module2_fr = self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(sub_module2)]['Failure Rate']
3431 
3432  else:
3433  sub_module2_fr = self.main_dict[str(selected_system)][str(selected_module)][str(sub_module2)]['Failure Rate']
3434 
3435  fr_list = list()
3436  fr_list = [sub_module1_fr, sub_module2_fr]
3437 
3438  if type_value == "Serial":
3439  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
3440  temp_fr = serial_fr
3441 
3442  elif type_value == "Parallel":
3443  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
3444  temp_fr = parallel_fr
3445 
3446  return temp_fr
3447 
3448 
3450  """
3451  Calculate Depth Level of Sub Module Configs Function
3452  """
3453  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3454  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3455 
3456  sub_module1 = self.lineEdit_configuration_first_sub_module.text()
3457  sub_module2 = self.lineEdit_configuration_second_sub_module.text()
3458 
3459  module_dict = self.main_dict[str(selected_system)][str(selected_module)]
3460  configuration_list_of_sub_modules = self.control_of_configuration_list(selected_system, selected_module)
3461 
3462  if (sub_module1 in configuration_list_of_sub_modules) and (sub_module2 not in configuration_list_of_sub_modules):
3463  old_level = module_dict["Configurations"][str(sub_module1)]["Depth Level"]
3464  level = old_level + 1
3465 
3466  elif (sub_module2 in configuration_list_of_sub_modules) and (sub_module1 not in configuration_list_of_sub_modules):
3467  old_level = module_dict["Configurations"][str(sub_module2)]["Depth Level"]
3468  level = old_level + 1
3469 
3470  elif (sub_module1 and sub_module2) in configuration_list_of_sub_modules:
3471  old_level1 = module_dict["Configurations"][str(sub_module1)]["Depth Level"]
3472  old_level2 = module_dict["Configurations"][str(sub_module2)]["Depth Level"]
3473  old_level = max(old_level1, old_level2)
3474  level = old_level + 1
3475 
3476  else:
3477  level = 0
3478 
3479  return level
3480 
3481 
3483  """
3484  Find Max Depth Level of Sub Module Configs Function
3485  """
3486  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3487  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3488 
3489  if ((selected_system and selected_module) != "") and ((selected_system and selected_module) != "None"):
3490  module_dict = self.main_dict[str(selected_system)][str(selected_module)]
3491  configuration_list = list(module_dict["Configurations"].keys())
3492  self.remove_key(configuration_list)
3493  level_list = list()
3494 
3495  for item in configuration_list:
3496  level = module_dict["Configurations"][str(item)]["Depth Level"]
3497  level_list.append(level)
3498 
3499  return max(level_list)
3500 
3501 
3503  """
3504  Delete Sub Module Configuration Function
3505  """
3506  try:
3507  selected_config_item = self.listWidget_configurations_of_sub_modules.selectedItems()
3508  configuration = self.listWidget_configurations_of_sub_modules.currentItem().text()
3509  ind = configuration.find(' =')
3510  configuration_name = configuration[:ind]
3511 
3512  # Remove selected configuration item from listWidget_components list.
3513  for cnt in range(self.listWidget_sub_modules.count()):
3514  if self.listWidget_sub_modules.item(cnt) != None:
3515  if str(self.listWidget_sub_modules.item(cnt).text()) == str(configuration_name):
3516  self.listWidget_sub_modules.takeItem(cnt)
3517 
3518  else:
3519  continue
3520 
3521  # Remove selected configuration item from listWidget_configuration list.
3522  for item in selected_config_item:
3523  self.listWidget_configurations_of_sub_modules.takeItem(self.listWidget_configurations_of_sub_modules.row(item))
3524 
3525  # Remove selected configuration item from comboBox_configuration_select_first_comp
3526  # and comboBox_configuration_select_second_comp.
3527  index_1 = self.comboBox_configuration_select_first_sub_module.findText(configuration_name)
3528  self.comboBox_configuration_select_first_sub_module.removeItem(index_1)
3529 
3530  index_2 = self.comboBox_configuration_select_second_sub_module.findText(configuration_name)
3531  self.comboBox_configuration_select_second_sub_module.removeItem(index_2)
3532 
3533  # Remove selected configuration from general_dict, also.
3534  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3535  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3536  del self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(configuration_name)]
3537 
3538  self.delete_sub_module_from_configuration_func(selected_module, configuration_name)
3539 
3540  except AttributeError:
3541  print("\nNot found an object to delete.\n")
3542 
3543 
3545  """
3546  Add Sub Module Into Config Function
3547  """
3548  selected_sub_module = self.listWidget_sub_modules.currentItem().text()
3549  selected_configuration = self.listWidget_configurations_of_sub_modules.currentItem().text()
3550  ind = selected_configuration.find(' =')
3551  selected_configuration_name = selected_configuration[:ind]
3552 
3553  if selected_sub_module != "None" and selected_configuration != "None":
3554  new_config = selected_configuration[:-1] + ", " + selected_sub_module + ")"
3555 
3556  for item in self.listWidget_configurations_of_sub_modules.selectedItems():
3557  item.setText(new_config)
3558 
3559  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3560  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3561 
3562  component_list = list(self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(selected_configuration_name)]['Components'])
3563  component_list.append(str(selected_sub_module))
3564  self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(selected_configuration_name)]['Components'] = component_list
3565 
3566  fr_list = list()
3567  configuration_list_of_sub_modules = self.control_of_configuration_list(selected_system, selected_module)
3568 
3569  for component in component_list:
3570  if component in configuration_list_of_sub_modules:
3571  fr_list.append(self.main_dict[str(selected_system)][str(selected_module)]["Configurations"][str(component)]['Failure Rate'])
3572 
3573  else:
3574  fr_list.append(self.main_dict[str(selected_system)][str(selected_module)][str(component)]['Failure Rate'])
3575 
3576  type_value = self.check_type(selected_configuration)
3577 
3578  if type_value == 'series':
3579  calculated_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
3580 
3581  elif type_value == 'parallel':
3582  calculated_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
3583 
3584  self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(selected_configuration_name)]['Failure Rate'] = calculated_fr
3585 
3586  level = self.add_sub_module_calculate_depth_level_of_configurations(selected_configuration_name)
3587  self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(selected_configuration_name)]['Depth Level'] = level
3588 
3590  self.main_dict[str(selected_system)][str(selected_module)]['Configurations']['Depth Level'] = max_level
3591 
3592 
3593  def add_sub_module_calculate_depth_level_of_configurations(self, selected_configuration_name):
3594  """
3595  Add Sub Module Calculate Depth Level of Configurations Function
3596  """
3597  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3598  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3599 
3600  module_dict = self.main_dict[str(selected_system)][str(selected_module)]
3601  component_list = list(module_dict["Configurations"][str(selected_configuration_name)]["Components"])
3602 
3603  configuration_list_of_sub_modules = self.control_of_configuration_list(selected_system, selected_module)
3604  level_list = list()
3605 
3606  for item in component_list:
3607  if item not in configuration_list_of_sub_modules:
3608  level = 0
3609 
3610  else:
3611  level = module_dict["Configurations"][str(item)]["Depth Level"]
3612 
3613  level_list.append(level)
3614 
3615  max_level = max(level_list) + 1
3616 
3617  return max_level
3618 
3619 
3621  """
3622  Select Final Configuration of Module Function
3623  """
3624  try:
3625  selected_system = self.comboBox_configuration_st_ssm_select_system.currentText()
3626  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
3627  configuration_count = self.listWidget_configurations_of_sub_modules.count()
3628 
3629  if configuration_count > 0:
3630  selected_final_configuration = self.listWidget_configurations_of_sub_modules.currentItem().text()
3631  ind = selected_final_configuration.find(' =')
3632  selected_final_configuration_name = selected_final_configuration[:ind]
3633  selected_final_configuration_fr = self.main_dict[str(selected_system)][str(selected_module)]['Configurations'][str(selected_final_configuration_name)]['Failure Rate']
3634 
3635  else:
3636  selected_final_configuration_name = self.listWidget_sub_modules.currentItem().text()
3637  selected_final_configuration_fr = self.main_dict[str(selected_system)][str(selected_module)][str(selected_final_configuration_name)]['Failure Rate']
3638 
3639  self.main_dict[str(selected_system)][str(selected_module)]["Final Configuration"] = str(selected_final_configuration_name)
3640  self.main_dict[str(selected_system)][str(selected_module)]['Failure Rate']["Nominal"] = selected_final_configuration_fr
3641 
3642  self.lineEdit_configuration_failure_rate_module.setText(str(selected_final_configuration_fr))
3643 
3645 
3646  except Exception as err:
3647  print("\nError: select_final_configuration_of_module\n")
3648  print(err)
3649 
3650 # "CONFIGURATION // SET TYPE // SET SUB-MODULE TYPES FUNCTIONS" - END -
3651 
3652 # "CONFIGURATION // SET TYPE // SET MODULE TYPES FUNCTIONS" - START -
3653 
3655  """
3656  First Module List Tab Function
3657  """
3658  self.comboBox_configuration_select_first_module.clear()
3659  self.comboBox_configuration_select_first_module.addItem("None")
3660 
3661 
3663  """
3664  Second Module List Tab Function
3665  """
3666  self.comboBox_configuration_select_second_module.clear()
3667  self.comboBox_configuration_select_second_module.addItem("None")
3668 
3669 
3671  """
3672  Module List Widget Function
3673  """
3674  self.listWidget_modules.clear()
3675  self.listWidget_configurations_of_modules.clear()
3676 
3677 
3679  """
3680  System List Control of Set Module Types Tab Function
3681  """
3682  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3683  self.comboBox_configuration_select_first_module.clear()
3684  self.comboBox_configuration_select_second_module.clear()
3685  self.listWidget_modules.clear()
3686 
3687  if current_system != "None" and current_system != "":
3688  module_list = list(self.main_dict[str(current_system)].keys())
3689  self.remove_key(module_list)
3690 
3691  configuration_list = list(self.main_dict[str(current_system)]['Configurations'].keys())
3692  self.remove_key(configuration_list)
3693  module_list.extend(configuration_list)
3694 
3695  self.comboBox_configuration_select_first_module.addItems(sorted(module_list))
3696  self.comboBox_configuration_select_second_module.addItems(sorted(module_list))
3697  self.listWidget_modules.addItems(sorted(module_list))
3698 
3699  else:
3700  self.comboBox_configuration_select_first_module.clear()
3701  self.comboBox_configuration_select_second_module.clear()
3702  self.listWidget_modules.clear()
3703 
3704 
3706  """
3707  System Failure Rate Control Function
3708  """
3709  self.lineEdit_configuration_failure_rate_system.clear()
3710  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3711 
3712  if current_system != "None" and current_system != "":
3713  current_system_fr = self.main_dict[str(current_system)]['Failure Rate']["Nominal"]
3714  self.lineEdit_configuration_failure_rate_system.setText(str(current_system_fr))
3715 
3716 
3718  """
3719  Convert Configurations of Modules Into Syntax Function
3720  """
3721  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3722  self.listWidget_configurations_of_modules.clear()
3723 
3724  if current_system != "None" and current_system != "":
3725  configuration_list = list(self.main_dict[str(current_system)]['Configurations'].keys())
3726  self.remove_key(configuration_list)
3727  syntax_list = list()
3728 
3729  for configuration in configuration_list:
3730  type_value = self.main_dict[str(current_system)]['Configurations'][str(configuration)]['Type']
3731  component_list = list(self.main_dict[str(current_system)]['Configurations'][str(configuration)]['Components'])
3732  syntax_name = str(configuration)
3733 
3734  if type_value == 'Serial':
3735  temp_syntax = str()
3736  for component in component_list:
3737  temp_syntax += str(component) + ', '
3738 
3739  length = len(temp_syntax)
3740  temp_syntax = temp_syntax[:length-2]
3741  syntax = str(syntax_name) + ' = ' + 'series(' + str(temp_syntax) + ')'
3742 
3743  elif type_value == 'Parallel':
3744  temp_syntax = str()
3745 
3746  for component in component_list:
3747  temp_syntax += str(component) + ', '
3748 
3749  length = len(temp_syntax)
3750  temp_syntax = temp_syntax[:length-2]
3751  syntax = str(syntax_name) + ' = ' + 'parallel(' + str(temp_syntax) + ')'
3752 
3753  syntax_list.append(syntax)
3754 
3755  self.listWidget_configurations_of_modules.addItems(sorted(syntax_list))
3756 
3757 
3759  """
3760  Module List Control of Set Module Types Tab Function
3761  """
3762  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3763 
3764  if current_system != "None" and current_system != "":
3765  module1 = str(self.comboBox_configuration_select_first_module.currentText())
3766  module2 = str(self.comboBox_configuration_select_second_module.currentText())
3767  configuration_list = self.control_of_configuration_list(current_system)
3768 
3769  if module1 != "None" and module1 != "":
3770  self.lineEdit_configuration_first_module.setText(str(module1))
3771 
3772  if module1 in configuration_list:
3773  module1_fr = self.main_dict[str(current_system)]['Configurations'][str(module1)]['Failure Rate']["Nominal"]
3774 
3775  else:
3776  module1_fr = self.main_dict[str(current_system)][str(module1)]['Failure Rate']["Nominal"]
3777 
3778  self.lineEdit_configuration_failure_rate_first_module.setText(str(module1_fr))
3779 
3780  if module2 != "None" and module2 != "":
3781  self.lineEdit_configuration_second_module.setText(str(module2))
3782 
3783  if module2 in configuration_list:
3784  module2_fr = self.main_dict[str(current_system)]['Configurations'][str(module2)]['Failure Rate']["Nominal"]
3785 
3786  else:
3787  module2_fr = self.main_dict[str(current_system)][str(module2)]['Failure Rate']["Nominal"]
3788 
3789  self.lineEdit_configuration_failure_rate_second_module.setText(str(module2_fr))
3790 
3791 
3793  """
3794  Create Syntax of Modules Function
3795  """
3796  type_value = self.comboBox_configuration_type_of_module.currentText()
3797  selected_system = self.comboBox_configuration_st_sm_select_system.currentText()
3798  module1 = self.lineEdit_configuration_first_module.text()
3799  module2 = self.lineEdit_configuration_second_module.text()
3801 
3802  if type_value != "":
3803  new_config_name = str()
3804  self.main_dict[str(selected_system)]["Configurations"]["Configuration Count"][str(type_value)] += 1
3805  selected_configuration_count = self.main_dict[str(selected_system)]["Configurations"]["Configuration Count"][str(type_value)]
3806 
3807  if type_value == 'Serial':
3808  s_name = 's' + str(selected_configuration_count)
3809  new_config_name = s_name
3810  s_content = 'series(' + str(module1) + ', ' + str(module2) + ')'
3812 
3813  self.main_dict[str(selected_system)]['Configurations'][str(s_name)] = None
3814  self.main_dict[str(selected_system)]['Configurations'][str(s_name)] = {'Depth Level': level, 'Failure Rate': {"Nominal": serial_fr, "Sensor Based": serial_fr}, 'Type': str(type_value), 'Components': [str(module1), str(module2)]}
3815  self.listWidget_configurations_of_modules.addItem(str(s_name + ' = ' + s_content))
3816 
3817  elif type_value == 'Parallel':
3818  p_name = 'p' + str(selected_configuration_count)
3819  new_config_name = p_name
3820  p_content = 'parallel(' + str(module1) + ', ' + str(module2) + ')'
3822 
3823  self.main_dict[str(selected_system)]['Configurations'][str(p_name)] = None
3824  self.main_dict[str(selected_system)]['Configurations'][str(p_name)] = {'Depth Level': level, 'Failure Rate': {"Nominal": parallel_fr, "Sensor Based": parallel_fr}, 'Type': str(type_value), 'Components': [str(module1), str(module2)]}
3825 
3826  self.listWidget_configurations_of_modules.addItem(str(p_name + ' = ' + p_content))
3827 
3828  max_level = self.find_max_depth_level_of_module_configs()
3829  self.main_dict[str(selected_system)]["Configurations"]["Depth Level"] = max_level
3830 
3831  self.comboBox_configuration_select_first_module.addItem(str(new_config_name))
3832  self.comboBox_configuration_select_second_module.addItem(str(new_config_name))
3833  self.listWidget_modules.addItem(str(new_config_name))
3834 
3835 
3837  """
3838  Calculate Serial Parallel Failure Rate Value of Modules
3839  """
3840  type_value = self.comboBox_configuration_type_of_module.currentText()
3841  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3842  module1 = self.lineEdit_configuration_first_module.text()
3843  module2 = self.lineEdit_configuration_second_module.text()
3844 
3845  configuration_list = self.control_of_configuration_list(current_system)
3846 
3847  if ((module1 and module2) != "None") and ((module1 and module2) != ""):
3848  if module1 in configuration_list:
3849  module1_fr = self.main_dict[str(current_system)]['Configurations'][str(module1)]['Failure Rate']["Nominal"]
3850 
3851  else:
3852  module1_fr = self.main_dict[str(current_system)][str(module1)]['Failure Rate']["Nominal"]
3853 
3854  if module2 in configuration_list:
3855  module2_fr = self.main_dict[str(current_system)]['Configurations'][str(module2)]['Failure Rate']["Nominal"]
3856 
3857  else:
3858  module2_fr = self.main_dict[str(current_system)][str(module2)]['Failure Rate']["Nominal"]
3859 
3860  fr_list = list()
3861  fr_list = [module1_fr, module2_fr]
3862 
3863  if type_value == "Serial":
3864  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
3865  temp_fr = serial_fr
3866 
3867  elif type_value == "Parallel":
3868  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
3869  temp_fr = parallel_fr
3870 
3871  return temp_fr
3872 
3873 
3875  """
3876  Calculate Depth Level of Module Configs Function
3877  """
3878  selected_system = self.comboBox_configuration_st_sm_select_system.currentText()
3879  module1 = self.lineEdit_configuration_first_module.text()
3880  module2 = self.lineEdit_configuration_second_module.text()
3881 
3882  system_dict = self.main_dict[str(selected_system)]
3883  configuration_list_of_modules = self.control_of_configuration_list(selected_system)
3884 
3885  if (module1 in configuration_list_of_modules) and (module2 not in configuration_list_of_modules):
3886  old_level = system_dict["Configurations"][str(module1)]["Depth Level"]
3887  level = old_level + 1
3888 
3889  elif (module2 in configuration_list_of_modules) and (module1 not in configuration_list_of_modules):
3890  old_level = system_dict["Configurations"][str(module2)]["Depth Level"]
3891  level = old_level + 1
3892 
3893  elif (module1 and module2) in configuration_list_of_modules:
3894  old_level1 = system_dict["Configurations"][str(module1)]["Depth Level"]
3895  old_level2 = system_dict["Configurations"][str(module2)]["Depth Level"]
3896  old_level = max(old_level1, old_level2)
3897  level = old_level + 1
3898 
3899  else:
3900  level = 0
3901 
3902  return level
3903 
3904 
3906  """
3907  Find Max Depth Level of Module Configs Function
3908  """
3909  selected_system = self.comboBox_configuration_st_sm_select_system.currentText()
3910 
3911  if (selected_system != "") and (selected_system != "None"):
3912  system_dict = self.main_dict[str(selected_system)]
3913  configuration_list = list(system_dict["Configurations"].keys())
3914  self.remove_key(configuration_list)
3915  level_list = list()
3916 
3917  for item in configuration_list:
3918  level = system_dict["Configurations"][str(item)]["Depth Level"]
3919  level_list.append(level)
3920 
3921  return max(level_list)
3922 
3923 
3925  """
3926  Delete Module Configuration Function
3927  """
3928  try:
3929  selected_config_item = self.listWidget_configurations_of_modules.selectedItems()
3930  configuration = self.listWidget_configurations_of_modules.currentItem().text()
3931  ind = configuration.find(' =')
3932  configuration_name = configuration[:ind]
3933 
3934  # Remove selected configuration item from listWidget_components list.
3935  for cnt in range(self.listWidget_modules.count()):
3936  if self.listWidget_modules.item(cnt) != None:
3937  if str(self.listWidget_modules.item(cnt).text()) == str(configuration_name):
3938  self.listWidget_modules.takeItem(cnt)
3939 
3940  else:
3941  continue
3942 
3943  # Remove selected configuration item from listWidget_configuration list.
3944  for item in selected_config_item:
3945  self.listWidget_configurations_of_modules.takeItem(self.listWidget_configurations_of_modules.row(item))
3946 
3947  # Remove selected configuration item from comboBox_configuration_select_first_comp
3948  # and comboBox_configuration_select_second_comp.
3949  index_1 = self.comboBox_configuration_select_first_module.findText(configuration_name)
3950  self.comboBox_configuration_select_first_module.removeItem(index_1)
3951 
3952  index_2 = self.comboBox_configuration_select_second_module.findText(configuration_name)
3953  self.comboBox_configuration_select_second_module.removeItem(index_2)
3954 
3955  # Remove selected configuration from general_dict, also.
3956  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3957  del self.main_dict[str(current_system)]['Configurations'][str(configuration_name)]
3958 
3959  self.delete_module_from_configuration_func(configuration_name)
3960 
3961  except AttributeError:
3962  print("\nNot found an object to delete.\n")
3963 
3964 
3966  """
3967  Add Module Into Config Function
3968  """
3969  selected_module = self.listWidget_modules.currentItem().text()
3970  selected_configuration = self.listWidget_configurations_of_modules.currentItem().text()
3971  ind = selected_configuration.find(' =')
3972  selected_configuration_name = selected_configuration[:ind]
3973 
3974  if selected_module != "None" and selected_configuration != "None":
3975  new_config = selected_configuration[:-1] + ", " + selected_module + ")"
3976 
3977  for item in self.listWidget_configurations_of_modules.selectedItems():
3978  item.setText(new_config)
3979 
3980  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
3981  component_list = list(self.main_dict[str(current_system)]['Configurations'][str(selected_configuration_name)]['Components'])
3982  component_list.append(str(selected_module))
3983  self.main_dict[str(current_system)]['Configurations'][str(selected_configuration_name)]['Components'] = component_list
3984 
3985  fr_list = list()
3986  configuration_list_of_modules = self.control_of_configuration_list(current_system)
3987 
3988  for component in component_list:
3989  if component in configuration_list_of_modules:
3990  fr_list.append(self.main_dict[str(current_system)]["Configurations"][str(component)]["Failure Rate"]["Nominal"])
3991 
3992  else:
3993  fr_list.append(self.main_dict[current_system][str(component)]["Failure Rate"]["Nominal"])
3994 
3995  type_value = self.check_type(selected_configuration)
3996 
3997  if type_value == 'series':
3998  calculated_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(fr_list)
3999 
4000  elif type_value == 'parallel':
4001  calculated_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(fr_list)
4002 
4003  self.main_dict[str(current_system)]['Configurations'][str(selected_configuration_name)]['Failure Rate']["Nominal"] = calculated_fr
4004  self.main_dict[str(current_system)]['Configurations'][str(selected_configuration_name)]['Failure Rate']["Sensor Based"] = calculated_fr
4005 
4006  level = self.add_module_calculate_depth_level_of_configurations(selected_configuration_name)
4007  self.main_dict[str(current_system)]['Configurations'][str(selected_configuration_name)]['Depth Level'] = level
4008 
4009  max_level = self.find_max_depth_level_of_module_configs()
4010  self.main_dict[str(current_system)]['Configurations']['Depth Level'] = max_level
4011 
4012 
4013  def add_module_calculate_depth_level_of_configurations(self, selected_configuration_name):
4014  """
4015  Add Module Calculate Depth Level of Configurations Function
4016  """
4017  selected_system = self.comboBox_configuration_st_sm_select_system.currentText()
4018  system_dict = self.main_dict[str(selected_system)]
4019  component_list = list(system_dict["Configurations"][str(selected_configuration_name)]["Components"])
4020 
4021  configuration_list_of_modules = self.control_of_configuration_list(selected_system)
4022  level_list = list()
4023 
4024  for item in component_list:
4025  if item not in configuration_list_of_modules:
4026  level = 0
4027 
4028  else:
4029  level = system_dict["Configurations"][str(item)]["Depth Level"]
4030  level_list.append(level)
4031 
4032  max_level = max(level_list) + 1
4033 
4034  return max_level
4035 
4036 
4038  """
4039  Select Final Configuration of System Function
4040  """
4041  try:
4042  current_system = self.comboBox_configuration_st_sm_select_system.currentText()
4043  configuration_count = self.listWidget_configurations_of_modules.count()
4044 
4045  if configuration_count > 0:
4046  selected_final_configuration = self.listWidget_configurations_of_modules.currentItem().text()
4047  ind = selected_final_configuration.find(' =')
4048  selected_final_configuration_name = selected_final_configuration[:ind]
4049  selected_final_configuration_fr = self.main_dict[str(current_system)]['Configurations'][str(selected_final_configuration_name)]['Failure Rate']["Nominal"]
4050 
4051  else:
4052  selected_final_configuration_name = self.listWidget_modules.currentItem().text()
4053  selected_final_configuration_fr = self.main_dict[str(current_system)][str(selected_final_configuration_name)]['Failure Rate']["Nominal"]
4054 
4055  self.main_dict[str(current_system)]["Final Configuration"] = str(selected_final_configuration_name)
4056  self.main_dict[str(current_system)]['Failure Rate']["Nominal"] = selected_final_configuration_fr
4057 
4058  self.lineEdit_configuration_failure_rate_system.setText(str(selected_final_configuration_fr))
4059 
4060  except Exception as err:
4061  print("\nError: select_final_configuration_of_system\n")
4062  print(err)
4063 
4064 
4066  """
4067  Select Reliability Model Function
4068  """
4069  try:
4070  selected_model = self.comboBox_configuration_reliability_model.currentText()
4071  shape_parameter_list = ["Weibull Distribution", "Curve Distribution"]
4072  self.selected_reliability_model = selected_model
4073 
4074  if selected_model in shape_parameter_list:
4075  self.label_configuration_shape_parameter.setEnabled(True)
4076  self.lineEdit_configuration_reliability_shape_parameter.setEnabled(True)
4077 
4078  else:
4079  self.label_configuration_shape_parameter.setEnabled(False)
4080  self.lineEdit_configuration_reliability_shape_parameter.setEnabled(False)
4081 
4082  except Exception as err:
4083  print("\nError: select_reliability_model_func\n")
4084  print(err)
4085 
4086 
4088  """
4089  Select PHM Unit Function
4090  """
4091  try:
4092  selected_unit = self.comboBox_configuration_unit.currentText()
4093 
4094  if selected_unit == self.configuration_reliability_unit[0]:
4095  self.selected_reliability_unit = True
4096 
4097  elif selected_unit == self.configuration_reliability_unit[1]:
4098  self.selected_reliability_unit = False
4099 
4100  else:
4101  pass
4102 
4103  except Exception as err:
4104  print("\nError: select_phm_unit_func\n")
4105  print(err)
4106 
4107 
4109  """
4110  Set Shape Parameter Function
4111  """
4112  try:
4113  shape_parameter = float(self.lineEdit_configuration_reliability_shape_parameter.text())
4114  self.shape_parameter = shape_parameter
4115 
4116  except Exception as err:
4117  print("\nError: set_shape_parameter_func\n")
4118  print(err)
4119 
4120 # "CONFIGURATION // SET TYPE // SET MODULE TYPES FUNCTIONS" - END -
4121 
4122 # "CONFIGURATION // ADD OBJECT 2 // ADD COMPONENT ELEMENT" - START -
4123 
4125  """
4126  Add Component Element Tab Function
4127  """
4128  self.comboBox_c_ao_ace_select_sub_module.clear()
4129  selected_module = self.comboBox_c_ao_ace_select_module.currentText()
4130 
4131  if selected_module != "":
4132  sub_module_list = list(self.main_dict["System"][str(selected_module)].keys())
4133  self.remove_key(sub_module_list)
4134  self.comboBox_c_ao_ace_select_sub_module.addItems(sub_module_list)
4135 
4136 
4138  """
4139  Add Component Element Tab Function 2
4140  """
4141  self.comboBox_c_ao_ace_select_component.clear()
4142  self.comboBox_c_ao_ace_select_component_2.clear()
4143  selected_module = self.comboBox_c_ao_ace_select_module.currentText()
4144  selected_sub_module = self.comboBox_c_ao_ace_select_sub_module.currentText()
4145 
4146  if selected_sub_module != "":
4147  component_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)].keys())
4148  self.remove_key(component_list)
4149 
4150  self.comboBox_c_ao_ace_select_component.addItems(component_list)
4151  self.comboBox_c_ao_ace_select_component_2.addItems(component_list)
4152 
4153 
4155  """
4156  Add New Custom Component Function
4157  """
4158  selected_module = self.comboBox_c_ao_ace_select_module.currentText()
4159  selected_sub_module = self.comboBox_c_ao_ace_select_sub_module.currentText()
4160  component_name = self.lineEdit_c_ao_ace_set_component_name.text()
4161  element_name = self.lineEdit_c_ao_ace_set_element_name.text()
4162  element_variable_name = self.lineEdit_c_ao_ace_set_element_variable_name.text()
4163  element_value = self.lineEdit_c_ao_ace_set_element_value.text()
4164 
4165  component_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)].keys())
4166  self.remove_key(component_list)
4167 
4168  if component_name != "":
4169  if component_name not in component_list:
4170  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component_name)] = {"Elements": dict(), "Formula": str(), "Failure Rate": float(0.0), "Final Configuration": str()}
4171  self.add_elements(selected_module, selected_sub_module, component_name, element_name, element_variable_name, element_value)
4172 
4173  else:
4174  self.add_elements(selected_module, selected_sub_module, component_name, element_name, element_variable_name, element_value)
4175  else:
4176  print("\nEnter a component name.\n")
4177 
4178 
4179  def add_elements(self, selected_module, selected_sub_module, component_name, element_name, element_variable_name, element_value):
4180  """
4181  Add Elements Function
4182  """
4183  if element_name != "" and element_variable_name != "" and element_value != "":
4184  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component_name)]["Elements"][str(element_variable_name)] = {"Name": str(element_name), "Value": float(element_value)}
4185 
4187  self.lineEdit_c_ao_ace_set_element_name.clear()
4188  self.lineEdit_c_ao_ace_set_element_variable_name.clear()
4189  self.lineEdit_c_ao_ace_set_element_value.clear()
4190 
4191  component_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)].keys())
4192  self.remove_key(component_list)
4193 
4194  self.comboBox_c_ao_ace_select_component.clear()
4195  self.comboBox_c_ao_ace_select_component_2.clear()
4196  self.comboBox_c_ao_ace_select_component.addItems(component_list)
4197  self.comboBox_c_ao_ace_select_component_2.addItems(component_list)
4198 
4199  else:
4200  if element_name == "":
4201  print("\nEnter an element name.\n")
4202 
4203  elif element_variable_name == "":
4204  print("\n Enter a variable name for element " + str(element_name) + ".\n")
4205 
4206  elif element_value == "":
4207  print("\n Enter a value for element " + str(element_name) + ".\n")
4208 
4209 
4211  """
4212  Add Elements Into List Widget Function
4213  """
4214  self.listWidget_c_ao_ace_list_of_elements.clear()
4215  selected_module = self.comboBox_c_ao_ace_select_module.currentText()
4216  selected_sub_module = self.comboBox_c_ao_ace_select_sub_module.currentText()
4217  selected_component = self.comboBox_c_ao_ace_select_component.currentText()
4218 
4219  if selected_module != "" and selected_sub_module != "" and selected_component != "":
4220  element_variable_name_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Elements"].keys())
4221  self.remove_key(element_variable_name_list)
4222 
4223  for item in element_variable_name_list:
4224  element_name = self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Elements"][str(item)]["Name"]
4225  element_value = self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Elements"][str(item)]["Value"]
4226  temp_str = str(element_name) + " : " + str(item) + " ---> " + str(element_value)
4227 
4228  self.listWidget_c_ao_ace_list_of_elements.addItem(temp_str)
4229 
4230 
4232  """
4233  Set Formula of Component Function
4234  """
4235  try:
4236  selected_module = str(self.comboBox_c_ao_ace_select_module.currentText())
4237  selected_sub_module = str(self.comboBox_c_ao_ace_select_sub_module.currentText())
4238  selected_component = str(self.comboBox_c_ao_ace_select_component_2.currentText())
4239  formula = self.plainTextEdit_c_ao_ac_set_formula.toPlainText()
4240 
4241  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Formula"] = str(formula)
4242 
4243  if formula != "" and formula != " " and formula != "None":
4244  component_dict = self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]
4245  formula_result = self.calculate_formula_result(component_dict)
4246 
4247  else:
4248  formula_result = 0.0
4249 
4250  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Failure Rate"] = formula_result
4251 
4252  self.lineEdit_c_ao_ace_component_fr.clear()
4253  self.lineEdit_c_ao_ace_component_fr.setText(str(formula_result))
4254 
4255  except Exception as err:
4256  print(err)
4257  temp_string = "Incorrect Operation"
4258  self.lineEdit_c_ao_ace_component_fr.clear()
4259  self.lineEdit_c_ao_ace_component_fr.setText(str(temp_string))
4260 
4261  @classmethod
4262  def calculate_formula_result(cls, component_dict):
4263  """
4264  Calculate Formula Result Function
4265  """
4266  formula = component_dict["Formula"]
4267  element_variable_list = list(component_dict["Elements"].keys())
4268 
4269  for item in element_variable_list:
4270  formula = formula.replace(str(item), str(component_dict["Elements"][str(item)]["Value"]))
4271 
4272  result = eval(formula)
4273 
4274  return result
4275 
4276 
4278  """
4279  Control Component Formula Function
4280  """
4281  selected_module = str(self.comboBox_c_ao_ace_select_module.currentText())
4282  selected_sub_module = str(self.comboBox_c_ao_ace_select_sub_module.currentText())
4283  selected_component = str(self.comboBox_c_ao_ace_select_component_2.currentText())
4284 
4285  if selected_component != "" and selected_sub_module != "" and selected_component != "":
4286  formula = str(self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Formula"])
4287  component_failure_rate = str(self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Failure Rate"])
4288 
4289  self.plainTextEdit_c_ao_ac_set_formula.clear()
4290  self.lineEdit_c_ao_ace_component_fr.clear()
4291 
4292  if formula != "" and component_failure_rate != "":
4293  self.plainTextEdit_c_ao_ac_set_formula.setPlainText(str(formula))
4294  self.lineEdit_c_ao_ace_component_fr.setText(str(component_failure_rate))
4295 
4296 
4298  """
4299  Delete an Element Function
4300  """
4301  selected_element_item = self.listWidget_c_ao_ace_list_of_elements.selectedItems()
4302 
4303  element = self.listWidget_c_ao_ace_list_of_elements.currentItem().text()
4304  ind1 = element.find(':')
4305  ind2 = element.find('-')
4306  element_name = element[ind1+2:ind2-1]
4307 
4308  # Remove selected module item from list of sub_modules.
4309  for item in selected_element_item:
4310  self.listWidget_c_ao_ace_list_of_elements.takeItem(self.listWidget_c_ao_ace_list_of_elements.row(item))
4311 
4312  selected_module = self.comboBox_c_ao_ace_select_module.currentText()
4313  selected_sub_module = self.comboBox_c_ao_ace_select_sub_module.currentText()
4314  selected_component = self.comboBox_c_ao_ace_select_component.currentText()
4315 
4316  if ((selected_module and selected_module and selected_component) != "None") and ((selected_sub_module and selected_sub_module and selected_component) != ""):
4317  # Remove selected module from main_dict, also.
4318  del self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Elements"][str(element_name)]
4319  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Formula"] = ""
4320  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(selected_component)]["Failure Rate"] = float(0.0)
4321 
4322  self.plainTextEdit_c_ao_ac_set_formula.clear()
4323  self.lineEdit_c_ao_ace_component_fr.clear()
4324 
4325 # "CONFIGURATION // ADD OBJECT 2 // ADD COMPONENT ELEMENT" - END -
4326 
4327 # "CONFIGURATION // ADD OBJECT 2 // ADD COMPONENT" - START -
4328 
4330  """
4331  Add Component Tab Function
4332  """
4333  self.comboBox_c_ao_ac_select_sub_module.clear()
4334  selected_module = self.comboBox_c_ao_ac_select_module.currentText()
4335 
4336  if selected_module != "":
4337  sub_module_list = list(self.main_dict["System"][str(selected_module)].keys())
4338  self.remove_key(sub_module_list)
4339 
4340  self.comboBox_c_ao_ac_select_sub_module.addItems(sub_module_list)
4341 
4342  self.comboBox_c_ao_ac_select_equipment.clear()
4343  self.comboBox_c_ao_ac_select_equipment.addItems(self.equipment_list)
4344 
4345 
4347  """
4348  Add New Component Function
4349  """
4350  selected_module = self.comboBox_c_ao_ac_select_module.currentText()
4351  selected_sub_module = self.comboBox_c_ao_ac_select_sub_module.currentText()
4352  component_name = self.lineEdit_c_ao_ac_set_component_name.text()
4353 
4354  # self.control_the_component_fr_is_changed_or_not()
4355 
4356  if self.groupBox_c_ao_ac_component_fr.isChecked():
4357  component_fr = self.set_only_component_fr()
4358  elif self.groupBox_c_ao_ac_default_fr.isChecked():
4359  component_fr = self.set_component_fr_from_default_equipments()
4360  else:
4361  component_fr = float(0.0)
4362 
4363  if component_name != "":
4364  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component_name)] = {"Elements": dict(), "Formula": str(), "Failure Rate": float(0.0), 'Final Configuration': str()}
4365 
4366  if component_fr != "":
4367  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component_name)]["Failure Rate"] = float(component_fr)
4369  self.lineEdit_c_ao_ac_set_component_name.clear()
4371  else:
4372  print("\nEnter a failure rate value for the component " + str(component_name) + ".\n")
4373  else:
4374  print("\nEnter a component name.\n")
4375 
4376  self.groupBox_c_ao_ac_component_fr.setChecked(False)
4377  self.groupBox_c_ao_ac_default_fr.setChecked(False)
4378 
4379 
4381  """
4382  Set Only Component Failure Rate Function
4383  """
4384  self.groupBox_c_ao_ac_default_fr.setChecked(False)
4385  component_fr = self.lineEdit_c_ao_ac_sfr_total_component_fr.text()
4386 
4387  self.lineEdit_c_ao_ac_component_fr.clear()
4388  self.spinBox_c_ao_ac_sfr_quantity.setValue(1)
4389  self.lineEdit_c_ao_ac_sfr_total_component_fr.clear()
4390 
4391  return component_fr
4392 
4393 
4395  """
4396  Set Component Failure Rate From Default Equipments Function
4397  """
4398  self.groupBox_c_ao_ac_component_fr.setChecked(False)
4399  component_fr = self.lineEdit_c_ao_ac_total_component_fr.text()
4400 
4401  self.lineEdit_c_ao_ac_component_fr_2.clear()
4402  self.spinBox_c_ao_ac_quantity.setValue(1)
4403  self.lineEdit_c_ao_ac_total_component_fr.clear()
4404 
4405  return component_fr
4406 
4407 
4409  """
4410  Calculate Component Total Failure Rate Function
4411  """
4412  try:
4413  equipment_fr = float(self.lineEdit_c_ao_ac_component_fr_2.text())
4414  quantity = float(self.spinBox_c_ao_ac_quantity.value())
4415 
4416  if equipment_fr != 0 and str(equipment_fr) != "":
4417  calculate_fr = float(equipment_fr * quantity)
4418  self.lineEdit_c_ao_ac_total_component_fr.setText(str(calculate_fr))
4419 
4420  except ValueError as err:
4421  print("\nError: calculate_component_total_fr_func\n")
4422  print(err)
4423 
4424 
4426  """
4427  Calculate Set Failure Rate Component Total Failure Rate Func
4428  """
4429  try:
4430  equipment_fr = float(self.lineEdit_c_ao_ac_component_fr.text())
4431  quantity = float(self.spinBox_c_ao_ac_sfr_quantity.value())
4432 
4433  if equipment_fr != 0 and str(equipment_fr) != "":
4434  calculate_fr = float(equipment_fr * quantity)
4435  self.lineEdit_c_ao_ac_sfr_total_component_fr.setText(str(calculate_fr))
4436 
4437  except ValueError as err:
4438  print("\nError: calculate_set_fr_component_total_fr_func\n")
4439  print(err)
4440 
4441 
4443  """
4444  Add Component Into List Widget Function
4445  """
4446  self.listWidget_c_ao_ac_list_of_components.clear()
4447  selected_module = self.comboBox_c_ao_ac_select_module.currentText()
4448  selected_sub_module = self.comboBox_c_ao_ac_select_sub_module.currentText()
4449 
4450  if selected_module != "" and selected_sub_module != "":
4451  component_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)].keys())
4452  self.remove_key(component_list)
4453 
4454  for item in component_list:
4455  component_fr = self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(item)]["Failure Rate"]
4456  temp_str = str(str(item) + str(" \t---> ") + str(component_fr))
4457 
4458  self.listWidget_c_ao_ac_list_of_components.addItem(temp_str)
4459 
4460 
4462  """
4463  Component Set Failure Rate Groupbox Control Function
4464  """
4465  self.groupBox_c_ao_ac_default_fr.setChecked(False)
4466 
4467 
4469  """
4470  Component Default Equipments Groupbox Control Function
4471  """
4472  self.groupBox_c_ao_ac_component_fr.setChecked(False)
4473  self.comboBox_c_ao_ac_select_equipment.clear()
4474  self.comboBox_c_ao_ac_select_equipment.addItems(self.equipment_list)
4475 
4476 
4477  # This function added as a comment line
4479  """
4480  Control the Component Failure Rate is Changed or Not Function
4481  """
4482  selected_module = self.comboBox_c_ao_ac_select_module.currentText()
4483  selected_sub_module = self.comboBox_c_ao_ac_select_sub_module.currentText()
4484 
4485  if ((selected_module and selected_sub_module) != "") and ((selected_module and selected_sub_module) != "None"):
4486  component_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)].keys())
4487  self.remove_key(component_list)
4488 
4489  configuration_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"].keys())
4490  new_component_name = self.lineEdit_c_ao_ac_set_component_name.text()
4491 
4492  if new_component_name in component_list:
4493  if self.lineEdit_c_ao_ac_sfr_total_component_fr.text() != "" and self.groupBox_c_ao_ac_component_fr.isChecked():
4494  new_component_fr = self.lineEdit_c_ao_ac_sfr_total_component_fr.text()
4495 
4496  elif self.lineEdit_c_ao_ac_component_fr_2.text() != "" and self.groupBox_c_ao_ac_default_fr.isChecked():
4497  new_component_fr = self.lineEdit_c_ao_ac_component_fr_2.text()
4498 
4499  for configuration in configuration_list:
4500  component_list_in_configuration = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(configuration)]["Components"])
4501 
4502  if new_component_name in component_list_in_configuration:
4503  self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(new_component_name)]["Failure Rate"] = new_component_fr
4504  component_fr_list_in_configuration = list()
4505 
4506  for component in component_list_in_configuration:
4507  component_fr_list_in_configuration.append(float(self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component)]["Failure Rate"]))
4508 
4509  type_value = self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(configuration)]["Type"]
4510 
4511  if type_value == "Serial":
4512  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(component_fr_list_in_configuration)
4513  fr_value = serial_fr
4514 
4515  elif type_value == "Parallel":
4516  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(component_fr_list_in_configuration)
4517  fr_value = parallel_fr
4518 
4519  self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(configuration)]["Failure Rate"] = float(fr_value)
4520 
4521 
4523  """
4524  Component Add Equipment Function
4525  """
4526  selected_equipment = str(self.comboBox_c_ao_ac_select_equipment.currentText())
4527  self.add_equipment_component_window = QtWidgets.QMainWindow()
4528 
4529  data_path = "lineEdit_c_ao_ac_component_fr_2"
4530 
4531  if selected_equipment == "Mechanical Equipment":
4533 
4534  elif selected_equipment == "Electrical Equipment":
4535  self.add_equipment_component = ElectricalEquipmentsWindow(self, data_path, False)
4536 
4537  self.add_equipment_component.setupUi(self.add_equipment_component_window)
4538  self.add_equipment_component_window.show()
4539 
4540 
4542  """
4543  Delete a Component Function
4544  """
4545  selected_component_item = self.listWidget_c_ao_ac_list_of_components.selectedItems()
4546  component = self.listWidget_c_ao_ac_list_of_components.currentItem().text()
4547  ind = component.find(' \t')
4548  component_name = component[:ind]
4549 
4550  # Remove selected module item from list of sub_modules.
4551  for item in selected_component_item:
4552  self.listWidget_c_ao_ac_list_of_components.takeItem(self.listWidget_c_ao_ac_list_of_components.row(item))
4553 
4554  selected_module = self.comboBox_c_ao_ac_select_module.currentText()
4555  selected_sub_module = self.comboBox_c_ao_ac_select_sub_module.currentText()
4556 
4557  if selected_module != "" and selected_module != "None" and selected_sub_module != "" and selected_sub_module != "None":
4558  # Remove selected module from main_dict, also.
4559  del self.main_dict["System"][str(selected_module)][str(selected_sub_module)][str(component_name)]
4560  self.delete_component_from_configuration_func(selected_module, selected_sub_module, component_name)
4561 
4562  # Remove selected module from comboboxes, also.
4563  ind1 = self.comboBox_c_ao_ace_select_component.findText(str(component_name))
4564  self.comboBox_c_ao_ace_select_component.removeItem(ind1)
4565 
4566  ind2 = self.comboBox_c_ao_ace_select_component_2.findText(str(component_name))
4567  self.comboBox_c_ao_ace_select_component_2.removeItem(ind2)
4568 
4569 
4570  def delete_component_from_configuration_func(self, selected_module, selected_sub_module, deleted_component):
4571  """
4572  Delete Component From Configuration Function
4573  """
4574  configuration_list = list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"].keys())
4575  self.remove_key(configuration_list)
4576 
4577  for item in configuration_list:
4578  if str(deleted_component) in list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(item)]["Components"]):
4579  self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(item)]["Components"].remove(str(deleted_component))
4580  temp_count = len(list(self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(item)]["Components"]))
4581 
4582  if temp_count == 0:
4583  self.main_dict["System"][str(selected_module)][str(selected_sub_module)]["Configurations"][str(item)]["Failure Rate"] = 0.0
4584 
4587 
4588 # "CONFIGURATION // ADD OBJECT 2 // ADD COMPONENT" - END -
4589 
4590 # "CONFIGURATION // ADD OBJECT 2 // ADD SUB MODULE" - START -
4591 
4593  """
4594  Add New Sub Module Function
4595  """
4596  selected_module = self.comboBox_c_ao_asm_select_module.currentText()
4597  sub_module_name = self.lineEdit_c_ao_asm_set_sub_module_name.text()
4598  # self.control_the_sub_module_fr_is_changed_or_not()
4599 
4600  if self.groupBox_c_ao_asm_sub_module_fr.isChecked():
4601  sub_module_fr = self.set_only_sub_module_fr()
4602 
4603  elif self.groupBox_c_ao_asm_default_fr.isChecked():
4604  sub_module_fr = self.set_sub_module_fr_from_default_equipments()
4605 
4606  else:
4607  sub_module_fr = float(0.0)
4608 
4609  if sub_module_name != "":
4610  self.main_dict["System"][str(selected_module)][str(sub_module_name)] = {"Failure Rate": float(0.0), 'Configurations': {'Configuration Count': {'Serial': 0, 'Parallel': 0}}, 'Reliability': float(0.0), 'Final Configuration': str()}
4611 
4612  if str(sub_module_fr) != "":
4613  self.main_dict["System"][str(selected_module)][str(sub_module_name)]["Failure Rate"] = float(sub_module_fr)
4615 
4616  else:
4617  print("\nEnter a failure rate value for the sub-module " + str(sub_module_name) + ".\n")
4618  else:
4619  print("\nEnter a sub-module name.\n")
4620 
4621  self.groupBox_c_ao_asm_sub_module_fr.setChecked(False)
4622  self.groupBox_c_ao_asm_default_fr.setChecked(False)
4623 
4624 
4626  """
4627  Set Sub Module Listwidget Function
4628  """
4629  self.listWidget_c_ao_asm_list_of_sub_modules.clear()
4630  selected_module = self.comboBox_c_ao_asm_select_module.currentText()
4631 
4632  if selected_module != "":
4633  sub_module_list = list(self.main_dict["System"][str(selected_module)].keys())
4634  self.remove_key(sub_module_list)
4635 
4636  for item in sub_module_list:
4637  sub_module_fr = self.main_dict["System"][str(selected_module)][str(item)]["Failure Rate"]
4638  temp_str = str(str(item) + str(" \t---> ") + str(sub_module_fr))
4639 
4640  self.listWidget_c_ao_asm_list_of_sub_modules.addItem(temp_str)
4641 
4642 
4644  """
4645  Set Only Sub Module Failure Rate Function
4646  """
4647  self.groupBox_c_ao_asm_default_fr.setChecked(False)
4648  sub_module_fr = self.lineEdit_c_ao_asm_sfr_total_component_fr.text()
4649 
4650  self.lineEdit_c_ao_asm_sub_module_fr.clear()
4651  self.spinBox_c_ao_asm_sfr_quantity.setValue(1)
4652  self.lineEdit_c_ao_asm_sfr_total_component_fr.clear()
4653 
4654  return sub_module_fr
4655 
4656 
4658  """
4659  Set Sub Module Failure Rate From Default Equipments Function
4660  """
4661  self.groupBox_c_ao_asm_sub_module_fr.setChecked(False)
4662  sub_module_fr = self.lineEdit_c_ao_asm_total_component_fr.text()
4663 
4664  self.lineEdit_c_ao_asm_component_fr.clear()
4665  self.spinBox_c_ao_asm_quantity.setValue(1)
4666  self.lineEdit_c_ao_asm_total_component_fr.clear()
4667 
4668  return sub_module_fr
4669 
4670 
4672  """
4673  Calculate Sub Module Total Failure Rate Function
4674  """
4675  try:
4676  equipment_fr = float(self.lineEdit_c_ao_asm_component_fr.text())
4677  quantity = float(self.spinBox_c_ao_asm_quantity.value())
4678  equipment_type = str(self.comboBox_c_ao_asm_select_type.currentText())
4679 
4680  if equipment_fr != 0 and str(equipment_fr) != "":
4681  if equipment_type == "Serial":
4682  calculate_fr = float(equipment_fr * quantity)
4683 
4684  else:
4685  parallel_count = float(self.fr_calculation_class.parallel_count_calculate_func(quantity))
4686  calculate_fr = float(equipment_fr * parallel_count)
4687 
4688  self.lineEdit_c_ao_asm_total_component_fr.setText(str(calculate_fr))
4689 
4690  except ValueError as err:
4691  print("\nError: calculate_sub_module_total_fr_func\n")
4692  print(err)
4693 
4694 
4696  """
4697  Calculate Set Failure Rate Sub Module Total Failure Rate Function
4698  """
4699  try:
4700  equipment_fr = float(self.lineEdit_c_ao_asm_sub_module_fr.text())
4701  quantity = float(self.spinBox_c_ao_asm_sfr_quantity.value())
4702  equipment_type = str(self.comboBox_c_ao_asm_sfr_select_type.currentText())
4703 
4704  if equipment_fr != 0 and str(equipment_fr) != "":
4705  if equipment_type == "Serial":
4706  calculate_fr = float(equipment_fr * quantity)
4707 
4708  else:
4709  parallel_count = float(self.fr_calculation_class.parallel_count_calculate_func(quantity))
4710  calculate_fr = float(equipment_fr * parallel_count)
4711 
4712  self.lineEdit_c_ao_asm_sfr_total_component_fr.setText(str(calculate_fr))
4713 
4714  except ValueError as err:
4715  print("\nError: calculate_set_fr_sub_module_total_fr_func\n")
4716  print(err)
4717 
4718 
4720  """
4721  Add Sub Module Into Listwidget Function
4722  """
4724  self.lineEdit_c_ao_asm_set_sub_module_name.clear()
4725 
4726 
4728  """
4729  Sub Module Set Failure Rate Groupbox Control Function
4730  """
4731  self.groupBox_c_ao_asm_default_fr.setChecked(False)
4732 
4733 
4735  """
4736  Sub Module Default Equipments Groupbox Control Function
4737  """
4738  self.groupBox_c_ao_asm_sub_module_fr.setChecked(False)
4739  self.comboBox_c_ao_asm_select_equipment.clear()
4740  self.comboBox_c_ao_asm_select_equipment.addItems(self.equipment_list)
4741 
4742 
4743  # This function added as a comment line
4745  """
4746  Control the Sub Module Failure Rate is Changed or Not Function
4747  """
4748  selected_module = self.comboBox_configuration_st_ssm_select_module.currentText()
4749 
4750  if (selected_module != "") and (selected_module != "None"):
4751  sub_module_list = list(self.main_dict["System"][str(selected_module)].keys())
4752  self.remove_key(sub_module_list)
4753 
4754  configuration_list = list(self.main_dict["System"][str(selected_module)]["Configurations"].keys())
4755  new_sub_module_name = self.lineEdit_c_ao_asm_set_sub_module_name.text()
4756 
4757  if new_sub_module_name in sub_module_list:
4758  if self.lineEdit_c_ao_asm_sfr_total_component_fr.text() != "" and self.groupBox_c_ao_asm_sub_module_fr.isChecked():
4759  new_sub_module_fr = self.lineEdit_c_ao_asm_sfr_total_component_fr.text()
4760 
4761  elif self.lineEdit_c_ao_asm_component_fr.text() != "" and self.groupBox_c_ao_asm_default_fr.isChecked():
4762  new_sub_module_fr = self.lineEdit_c_ao_asm_component_fr.text()
4763 
4764  for configuration in configuration_list:
4765  sub_module_list_in_configuration = list(self.main_dict["System"][str(selected_module)]["Configurations"][str(configuration)]["Components"])
4766 
4767  if new_sub_module_name in sub_module_list_in_configuration:
4768  self.main_dict["System"][str(selected_module)][str(new_sub_module_name)]["Failure Rate"] = new_sub_module_fr
4769  sub_module_fr_list_in_configuration = list()
4770 
4771  for sub_module in sub_module_list_in_configuration:
4772  sub_module_fr_list_in_configuration.append(float(self.main_dict["System"][str(selected_module)][str(sub_module)]["Failure Rate"]))
4773 
4774  type_value = self.main_dict["System"][str(selected_module)]["Configurations"][str(configuration)]["Type"]
4775 
4776  if type_value == "Serial":
4777  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(sub_module_fr_list_in_configuration)
4778  fr_value = serial_fr
4779 
4780  elif type_value == "Parallel":
4781  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(sub_module_fr_list_in_configuration)
4782  fr_value = parallel_fr
4783 
4784  self.main_dict["System"][str(selected_module)]["Configurations"][str(configuration)]["Failure Rate"] = float(fr_value)
4785 
4786 
4787  def sub_module_add_equipment_func(self, MainWindow):
4788  """
4789  Sub Module Add Equipment Function
4790  """
4791  selected_equipment = str(self.comboBox_c_ao_asm_select_equipment.currentText())
4792  self.add_equipment_sub_module_window = QtWidgets.QMainWindow()
4793 
4794  data_path = "lineEdit_c_ao_asm_component_fr"
4795 
4796  if selected_equipment == "Mechanical Equipment":
4798 
4799  elif selected_equipment == "Electrical Equipment":
4800  self.add_equipment_sub_module = ElectricalEquipmentsWindow(self, data_path, True)
4801 
4802  self.add_equipment_sub_module.setupUi(self.add_equipment_sub_module_window)
4803  self.add_equipment_sub_module_window.show()
4804 
4805 
4807  """
4808  Delete a Sub Module Function
4809  """
4810  selected_sub_module_item = self.listWidget_c_ao_asm_list_of_sub_modules.selectedItems()
4811  sub_module = self.listWidget_c_ao_asm_list_of_sub_modules.currentItem().text()
4812  ind = sub_module.find(' \t')
4813  sub_module_name = sub_module[:ind]
4814 
4815  # Remove selected module item from list of sub_modules.
4816  for item in selected_sub_module_item:
4817  self.listWidget_c_ao_asm_list_of_sub_modules.takeItem(self.listWidget_c_ao_asm_list_of_sub_modules.row(item))
4818 
4819  selected_module = self.comboBox_c_ao_asm_select_module.currentText()
4820 
4821  if selected_module != "" and selected_module != "None":
4822  # Remove selected module from main_dict, also.
4823  del self.main_dict["System"][str(selected_module)][str(sub_module_name)]
4824  self.delete_sub_module_from_configuration_func(selected_module, sub_module_name)
4825 
4826  # Remove selected module from comboboxes, also.
4827  ind1 = self.comboBox_c_ao_ac_select_sub_module.findText(str(sub_module_name))
4828  self.comboBox_c_ao_ac_select_sub_module.removeItem(ind1)
4829 
4830  ind2 = self.comboBox_c_ao_ace_select_sub_module.findText(str(sub_module_name))
4831  self.comboBox_c_ao_ace_select_sub_module.removeItem(ind2)
4832 
4833 
4834  def delete_sub_module_from_configuration_func(self, selected_module, deleted_sub_module):
4835  """
4836  Delete Sub Module From Configuration Function
4837  """
4838  configuration_list = list(self.main_dict["System"][str(selected_module)]["Configurations"].keys())
4839  self.remove_key(configuration_list)
4840 
4841  for item in configuration_list:
4842  if str(deleted_sub_module) in list(self.main_dict["System"][str(selected_module)]["Configurations"][str(item)]["Components"]):
4843  self.main_dict["System"][str(selected_module)]["Configurations"][str(item)]["Components"].remove(str(deleted_sub_module))
4844  temp_count = len(list(self.main_dict["System"][str(selected_module)]["Configurations"][str(item)]["Components"]))
4845 
4846  if temp_count == 0:
4847  self.main_dict["System"][str(selected_module)]["Configurations"][str(item)]["Failure Rate"] = 0.0
4848 
4851 
4852 # "CONFIGURATION // ADD OBJECT 2 // ADD SUB MODULE" - END -
4853 
4854 # "CONFIGURATION // ADD OBJECT 2 // ADD MODULE" - START -
4855 
4856  def add_new_module(self):
4857  """
4858  Add New Module Function
4859  """
4860  module_name = self.lineEdit_c_ao_am_module_name.text()
4861 
4862  #self.control_the_module_fr_is_changed_or_not()
4863 
4864  if self.groupBox_c_ao_am_module_fr.isChecked():
4865  module_fr = self.set_only_module_fr()
4866 
4867  else:
4868  module_fr = float(0.0)
4869 
4870  if module_name != "":
4871  self.main_dict["System"][str(module_name)] = {"Failure Rate": {"Nominal": float(0.0)}, 'Configurations': {'Configuration Count': {'Serial': 0, 'Parallel': 0}}, 'Reliability': {"Nominal": float(0.0)}, 'Final Configuration': str()}
4872 
4873  if module_fr != "":
4874  self.main_dict["System"][str(module_name)]["Failure Rate"]["Nominal"] = float(module_fr)
4875 
4879 
4880  else:
4881  print("\nEnter a failure rate value for the module " + str(module_name) + ".\n")
4882  else:
4883  print("\nEnter a module name.\n")
4884 
4885  self.groupBox_c_ao_am_module_fr.setChecked(False)
4886 
4887 
4889  """
4890  Set Module Listwidget Function
4891  """
4892  module_list = list(self.main_dict["System"].keys())
4893  self.remove_key(module_list)
4894 
4895  self.listWidget_c_ao_am_list_of_modules.clear()
4896 
4897  for item in module_list:
4898  module_fr = self.main_dict["System"][str(item)]["Failure Rate"]["Nominal"]
4899  self.listWidget_c_ao_am_list_of_modules.addItem(str(item) + str(" \t---> ") + str(module_fr))
4900 
4901 
4903  """
4904  Add Module Into Add Module Listwidget Function
4905  """
4906  module_list = list(self.main_dict["System"].keys())
4907  self.remove_key(module_list)
4908  self.listWidget_c_ao_am_list_of_modules.clear()
4909 
4910  for item in module_list:
4911  module_fr = self.main_dict["System"][str(item)]["Failure Rate"]["Nominal"]
4912  self.listWidget_c_ao_am_list_of_modules.addItem(str(item) + str(" \t---> ") + str(module_fr))
4913 
4914 
4916  """
4917  Add Module Into Combobox Function
4918  """
4919  module_list = list(self.main_dict["System"].keys())
4920  self.remove_key(module_list)
4921 
4922  self.comboBox_c_ao_asm_select_module.clear()
4923  self.comboBox_c_ao_asm_select_module.addItems(module_list)
4924 
4925  self.comboBox_c_ao_ac_select_module.clear()
4926  self.comboBox_c_ao_ac_select_module.addItems(module_list)
4927 
4928  self.comboBox_c_ao_ace_select_module.clear()
4929  self.comboBox_c_ao_ace_select_module.addItems(module_list)
4930 
4932 
4933 
4935  """
4936  Set Only Module Failure Rate Function
4937  """
4938  module_fr = self.lineEdit_c_ao_am_total_module_fr.text()
4939 
4940  self.lineEdit_c_ao_am_module_fr.clear()
4941  self.spinBox_c_ao_am_quantity.setValue(1)
4942  self.lineEdit_c_ao_am_total_module_fr.clear()
4943 
4944  return module_fr
4945 
4946 
4948  """
4949  Calculate Set Failure Rate Module Total Failure Rate Function
4950  """
4951  try:
4952  equipment_fr = float(self.lineEdit_c_ao_am_module_fr.text())
4953  quantity = float(self.spinBox_c_ao_am_quantity.value())
4954  equipment_type = str(self.comboBox_c_ao_am_select_type.currentText())
4955 
4956  if equipment_fr != 0 and str(equipment_fr) != "":
4957  if equipment_type == "Serial":
4958  calculate_fr = float(equipment_fr * quantity)
4959 
4960  else:
4961  parallel_count = float(self.fr_calculation_class.parallel_count_calculate_func(quantity))
4962  calculate_fr = float(equipment_fr * parallel_count)
4963 
4964  self.lineEdit_c_ao_am_total_module_fr.setText(str(calculate_fr))
4965 
4966  except ValueError as err:
4967  print("\nError: calculate_set_fr_module_total_fr_func\n")
4968  print(err)
4969 
4970  # This function added as a comment line
4972  """
4973  Control the Module Failure Rate is Changed or Not Function
4974  """
4975  module_list = list(self.main_dict["System"].keys())
4976  self.remove_key(module_list)
4977 
4978  configuration_list = list(self.main_dict["System"]["Configurations"].keys())
4979  new_module_name = self.lineEdit_c_ao_am_module_name.text()
4980 
4981  if new_module_name in module_list:
4982  new_module_fr = self.lineEdit_c_ao_am_module_fr.text()
4983 
4984  for configuration in configuration_list:
4985  module_list_in_configuration = list(self.main_dict["System"]["Configurations"][str(configuration)]["Components"])
4986 
4987  if new_module_name in module_list_in_configuration:
4988  self.main_dict["System"][str(new_module_name)]["Failure Rate"]["Nominal"] = new_module_fr
4989  module_fr_list_in_configuration = list()
4990 
4991  for module in module_list_in_configuration:
4992  module_fr_list_in_configuration.append(float(self.main_dict["System"][str(module)]["Failure Rate"]["Nominal"]))
4993 
4994  type_value = self.main_dict["System"]["Configurations"][str(configuration)]["Type"]
4995 
4996  if type_value == "Serial":
4997  serial_fr = self.fr_calculation_class.component_serial_failure_rate_calculation(module_fr_list_in_configuration)
4998  fr_value = serial_fr
4999 
5000  elif type_value == "Parallel":
5001  parallel_fr = self.fr_calculation_class.component_parallel_failure_rate_calculation(module_fr_list_in_configuration)
5002  fr_value = parallel_fr
5003 
5004  self.main_dict["System"]["Configurations"][str(configuration)]["Failure Rate"] = float(fr_value)
5005 
5006 
5007  def delete_a_module(self):
5008  """
5009  Delete a Module Function
5010  """
5011  selected_module_item = self.listWidget_c_ao_am_list_of_modules.selectedItems()
5012 
5013  module = self.listWidget_c_ao_am_list_of_modules.currentItem().text()
5014  ind = module.find(' \t')
5015  module_name = module[:ind]
5016 
5017  # Remove selected module item from list of modules.
5018  for item in selected_module_item:
5019  self.listWidget_c_ao_am_list_of_modules.takeItem(self.listWidget_c_ao_am_list_of_modules.row(item))
5020 
5021  # Remove selected module from main_dict, also.
5022  del self.main_dict["System"][str(module_name)]
5023  self.delete_module_from_configuration_func(module_name)
5024 
5025  # Remove selected module from comboboxes, also.
5027 
5028  ind1 = self.comboBox_c_ao_asm_select_module.findText(str(module_name))
5029  self.comboBox_c_ao_asm_select_module.removeItem(ind1)
5030 
5031  ind2 = self.comboBox_c_ao_ac_select_module.findText(str(module_name))
5032  self.comboBox_c_ao_ac_select_module.removeItem(ind2)
5033 
5034  ind3 = self.comboBox_c_ao_ace_select_module.findText(str(module_name))
5035  self.comboBox_c_ao_ace_select_module.removeItem(ind3)
5036 
5037 
5038  def delete_module_from_configuration_func(self, deleted_module):
5039  """
5040  Delete Module From Configuration Function
5041  """
5042  configuration_list = list(self.main_dict["System"]["Configurations"].keys())
5043  self.remove_key(configuration_list)
5044 
5045  for item in configuration_list:
5046  if str(deleted_module) in list(self.main_dict["System"]["Configurations"][str(item)]["Components"]):
5047  self.main_dict["System"]["Configurations"][str(item)]["Components"].remove(str(deleted_module))
5048  temp_count = len(list(self.main_dict["System"]["Configurations"][str(item)]["Components"]))
5049 
5050  if temp_count == 0:
5051  self.main_dict["System"]["Configurations"][str(item)]["Failure Rate"] = 0.0
5052 
5055 
5056 # "CONFIGURATION // ADD OBJECT 2 // ADD MODULE" - END -
5057 
5058 # ---------------------------------------------------------------------------------------------------------------
5059 
5061  """
5062  Monitoring Events Function
5063  """
5064  self.comboBox_m_reliability_module.currentIndexChanged.connect(self.monitoring_module_reliability_func)
5065  self.pushButton_m_hazard_rate_refresh_sensor.clicked.connect(self.monitoring_show_sensor_list_func)
5066  self.pushButton_m_hazard_rate_add_sensor.clicked.connect(self.monitoring_hazard_rate_add_sensor_func)
5067  self.comboBox_m_select_place_failure_rate.currentIndexChanged.connect(self.monitoring_hazard_rate_select_place_func)
5068  self.comboBox_m_hazard_rate_select_sensor.currentIndexChanged.connect(self.combobox_hazard_rate_select_sensor_func)
5069 
5070 # ---------------------------------------------------------------------------------------------------------------
5071 
5072 # "MONITORING // HAZARD RATE FUNCTIONS" - START -
5073 
5075  """
5076  Monitoring Show Sensor List Function
5077  """
5078  selected_item = str(self.comboBox_m_select_place_failure_rate.currentText())
5079  sensor_list = list(self.get_all_topics_func())
5080 
5081  if (selected_item in list(self.temperature_sensor_dict.keys())) and selected_item != "" and selected_item != "None":
5082  temperature_sensor_list = list(self.temperature_sensor_dict[str(selected_item)]["Sensors"].keys())
5083  distance_list = list()
5084 
5085  if temperature_sensor_list and sensor_list:
5086  for sensor in sensor_list:
5087  if sensor not in temperature_sensor_list:
5088  distance_list.append(sensor)
5089 
5090  else:
5091  distance_list = sensor_list
5092 
5093  self.combobox_hazard_rate_selection_sensor_func(distance_list)
5094 
5095  elif selected_item not in list(self.temperature_sensor_dict.keys()):
5097 
5098 
5100  """
5101  Combobox Hazard Rate Selection Sensor Function
5102  """
5103  self.comboBox_m_hazard_rate_select_sensor.clear()
5104  self.comboBox_m_hazard_rate_select_sensor.addItem("None")
5105  self.comboBox_m_hazard_rate_select_sensor.addItems(sensor_list)
5106  self.lineEdit_m_hazard_rate_select_sensor_value.clear()
5107 
5108 
5110  """
5111  Combobox Hazard Rate Select Sensor Function
5112  """
5113  select_topic = self.comboBox_m_hazard_rate_select_sensor.currentText()
5114 
5115  if select_topic != "None" and select_topic != "":
5117  self.thread_hazard_rate_sensor_based.stop_thread()
5119 
5122 
5123  elif select_topic == "None":
5125  self.thread_hazard_rate_sensor_based.stop_thread()
5127 
5128  self.lineEdit_m_hazard_rate_select_sensor_value.clear()
5129 
5130 
5132  """
5133  Monitoring Hazard Rate Select Place Function
5134  """
5135  selected_item = str(self.comboBox_m_select_place_failure_rate.currentText())
5136 
5137  if (selected_item in list(self.temperature_sensor_dict.keys())) and selected_item != "" and selected_item != "None":
5139 
5140  elif selected_item not in list(self.temperature_sensor_dict.keys()):
5141  self.listWidget_monitoring_hazard_rate_sensor_list.clear()
5143 
5144 
5146  """
5147  Monitoring Hazard Rate Add Sensor Function
5148  """
5149  selected_sensor = str(self.comboBox_m_hazard_rate_select_sensor.currentText())
5150  selected_item = str(self.comboBox_m_select_place_failure_rate.currentText())
5151 
5152  if selected_item != "" and selected_item != "None" and selected_sensor != "None" and selected_sensor != "":
5153  if selected_item not in list(self.temperature_sensor_dict.keys()):
5154  self.temperature_sensor_dict[str(selected_item)] = {"Avarage": self.temperature_t0, "Sensors": dict()}
5155 
5156  self.temperature_sensor_dict[str(selected_item)]["Sensors"][str(selected_sensor)] = dict({"Thread": ROSSensor(selected_sensor), "Value": 0.0})
5158 
5159 
5161  """
5162  Monitoring Hazard Rate Set Listwidget Sensor List Function
5163  """
5164  sensor_list = list(self.temperature_sensor_dict[str(selected_item)]["Sensors"].keys())
5165 
5166  self.listWidget_monitoring_hazard_rate_sensor_list.clear()
5167  self.listWidget_monitoring_hazard_rate_sensor_list.addItems(sensor_list)
5169 
5170  @classmethod
5172  """
5173  Get All Topics Function
5174  """
5175  topic_list = list()
5176  current_topics = rospy.get_published_topics()
5177 
5178  for topic_name, topic_type in current_topics:
5179  if topic_name != "/rosout" and topic_name != "/rosout_agg":
5180  topic_list.append(topic_name)
5181 
5182  topic_list.sort()
5183 
5184  return topic_list
5185 
5186 # "MONITORING // HAZARD RATE FUNCTIONS" - END -
5187 
5188 # "MONITORING // GENERAL TAB FUNCTIONS" - START -
5189 
5191  """
5192  Monitoring General Tab Function
5193  """
5197 
5198 
5200  """
5201  Monitoring Regeneration Module Function
5202  """
5203  module_list = list(self.main_dict["System"].keys())
5204  self.remove_key(module_list)
5205  self.comboBox_m_reliability_module.clear()
5206  self.comboBox_m_reliability_module.addItem("None")
5207  self.comboBox_m_reliability_module.addItems(module_list)
5208  self.comboBox_m_select_place_failure_rate.clear()
5209  self.comboBox_m_select_place_failure_rate.addItems(module_list)
5210 
5211 
5213  """
5214  Monitoring Regeneration System Failure Type Function
5215  """
5216  failure_rate_type_list = self.get_failure_rate_type_func()
5217  self.comboBox_m_sys_select_failure_rate_type.clear()
5218  self.comboBox_m_sys_select_failure_rate_type.addItems(failure_rate_type_list)
5219  self.comboBox_m_sys_select_reliability_type.clear()
5220  self.comboBox_m_sys_select_reliability_type.addItems(failure_rate_type_list)
5221 
5222 
5224  """
5225  Monitoring Regeneration POTC Function
5226  """
5227  task_list = list(self.prognostic_potc_dict.keys())
5228 
5229  if task_list:
5230  task_list.sort()
5231  self.comboBox_m_prognostic_potc_select_task.clear()
5232  self.comboBox_m_prognostic_potc_select_task.addItems(task_list)
5233 
5234  else:
5235  self.comboBox_m_prognostic_potc_select_task.clear()
5236  self.comboBox_m_prognostic_potc_select_task.addItem("None")
5237 
5238 
5240  """
5241  Monitoring Module Reliability Function
5242  """
5243  select_module = self.comboBox_m_reliability_module.currentText()
5244 
5245  if select_module != "" and select_module != "None":
5246  module_fr = self.main_dict["System"][str(select_module)]['Failure Rate']["Nominal"]
5247  reliability = self.r_calculation_class.reliability_calculate_func(self.phm_gui_time, module_fr, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5248 
5249  self.comboBox_m_sys_select_module_reliability_type.clear()
5250  self.comboBox_m_sys_select_module_reliability_type.addItem("Nominal")
5251 
5252  type_list = list(self.main_dict["System"][str(select_module)]['Failure Rate'].keys())
5253  type_list.remove("Nominal")
5254 
5255  if type_list:
5256  self.comboBox_m_sys_select_module_reliability_type.addItems(type_list)
5257 
5258  else:
5259  reliability = 1.0
5260  self.comboBox_m_sys_select_module_reliability_type.clear()
5261 
5262  self.lineEdit_m_module_reliability.setText(str(reliability))
5263 
5264 # "MONITORING // GENERAL TAB FUNCTIONS" - END -
5265 
5266 # PHM POTC FUNCTIONS - START -
5268  """
5269  Monitoring System POTC Function
5270  """
5271  system_fr = self.main_dict["System"]["Failure Rate"]["Nominal"]
5272 
5273  # Predict POTC
5274  if system_fr != 0.0 and self.potc_ros.robot_task_list_control:
5275  system_reliability = self.main_dict["System"]["Reliability"]["Nominal"]
5276  system_sb_fr = self.main_dict["System"]["Failure Rate"]["Sensor Based"]
5277  system_sb_reliability = self.main_dict["System"]["Reliability"]["Sensor Based"]
5278 
5279  predict_potc_class = SimulationRobotTaskCompletion(system_fr, system_reliability, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5280  predict_sb_potc_class = SimulationRobotTaskCompletion(system_sb_fr, system_sb_reliability, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5281 
5282  potc_position_list, potc_time_list = predict_potc_class.split_robot_task_list_func(self.potc_ros.robot_task_list)
5283 
5284  potc_position_list = self.potc_task_position_unit_func(potc_position_list, self.selected_reliability_unit)
5285  potc_time_list = self.potc_task_time_unit_func(potc_time_list, self.selected_reliability_unit)
5286 
5287  self.monitoring_add_prognostic_potc_func(potc_position_list, potc_time_list)
5288 
5289  predict_potc = predict_potc_class.prognostic_calculate_last_potc_func(potc_time_list, potc_position_list)
5290  predict_sb_potc = predict_sb_potc_class.prognostic_calculate_last_potc_func(potc_time_list, potc_position_list)
5291 
5292  self.potc_main_dict["Predict"]["Nominal"]["POTC"].append(float(predict_potc))
5293  predict_list_count = len(self.potc_main_dict["Predict"]["Nominal"]["POTC"]) - 1
5294  self.potc_main_dict["Predict"]["Nominal"]["Time"].append(int(predict_list_count))
5295 
5296  self.potc_main_dict["Predict"]["Sensor Based"]["POTC"].append(float(predict_sb_potc))
5297  predict_sb_list_count = len(self.potc_main_dict["Predict"]["Sensor Based"]["POTC"]) - 1
5298  self.potc_main_dict["Predict"]["Sensor Based"]["Time"].append(int(predict_sb_list_count))
5299 
5300  publish_data = dict()
5301  publish_data["Nominal"] = {"POTC": predict_potc, "Time": predict_potc_class.simulation_time, "Distance": predict_potc_class.simulation_distance}
5302  publish_data["Sensor Based"] = {"POTC": predict_sb_potc, "Time": predict_sb_potc_class.simulation_time, "Distance": predict_sb_potc_class.simulation_distance}
5303  self.publisher_gui_predict_potc_func(publish_data)
5304 
5305  # Predict Nominal POTC
5306  self.lineEdit_m_sys_potc_predict_reliability.setText(str(predict_potc))
5307  # Predict Sensor Based POTC
5308  self.lineEdit_m_sys_potc_predict_sb_reliability.setText(str(predict_sb_potc))
5309 
5310  # Predict Time
5311  self.lineEdit_m_potc_predict_time.setText(str(predict_potc_class.simulation_time))
5312  # Predict Distance
5313  self.lineEdit_m_potc_predict_distance.setText(str(predict_potc_class.simulation_distance))
5314  self.potc_ros.robot_task_list_control = False
5315 
5316  # Actual POTC
5317  if system_fr != 0.0 and self.potc_ros.task_time_control and self.potc_ros.task_position_control:
5318  potc_class = RobotTaskCompletion(self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5319  potc_sb_class = RobotTaskCompletion(self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5320 
5321  potc_task_time = self.potc_ros.task_time
5322  potc_task_position = self.potc_ros.task_position
5323  potc_task_position = self.potc_task_position_unit_func(potc_task_position, self.selected_reliability_unit)
5324  potc_task_time = self.potc_task_time_unit_func(potc_task_time, self.selected_reliability_unit)
5325 
5326  system_reliability = self.main_dict["System"]["Reliability"]["Nominal"]
5327 
5328  system_sb_fr = self.main_dict["System"]["Failure Rate"]["Sensor Based"]
5329  system_sb_reliability = self.main_dict["System"]["Reliability"]["Sensor Based"]
5330 
5331  actual_potc = potc_class.probability_of_task_completion_calculate_func(potc_task_time, potc_task_position, system_fr, system_reliability)
5332  actual_sb_potc = potc_sb_class.probability_of_task_completion_calculate_func(potc_task_time, potc_task_position, system_sb_fr, system_sb_reliability)
5333 
5334  self.potc_main_dict["Actual"]["Nominal"]["POTC"].append(float(actual_potc))
5335  actual_list_count = len(self.potc_main_dict["Actual"]["Nominal"]["POTC"]) - 1
5336  self.potc_main_dict["Actual"]["Nominal"]["Time"].append(int(actual_list_count))
5337 
5338  self.potc_main_dict["Actual"]["Sensor Based"]["POTC"].append(float(actual_sb_potc))
5339  actual_sb_list_count = len(self.potc_main_dict["Actual"]["Sensor Based"]["POTC"]) - 1
5340  self.potc_main_dict["Actual"]["Sensor Based"]["Time"].append(int(actual_sb_list_count))
5341 
5342  publish_data = dict()
5343  publish_data["Nominal"] = {"POTC": potc_class.last_potc, "Time": potc_class.current_potc_time, "Distance": potc_class.current_potc_distance}
5344  publish_data["Sensor Based"] = {"POTC": potc_sb_class.last_potc, "Time": potc_sb_class.current_potc_time, "Distance": potc_sb_class.current_potc_distance}
5345 
5346  self.publisher_gui_actual_potc_func(publish_data)
5347 
5348  # Actual POTC
5349  self.lineEdit_m_sys_potc_reliability.setText(str(potc_class.last_potc))
5350  # Actual Sensor Based POTC
5351  self.lineEdit_m_sys_potc_sb_reliability.setText(str(potc_sb_class.last_potc))
5352 
5353  # Actual Time
5354  self.lineEdit_m_potc_actual_time.setText(str(potc_class.current_potc_time))
5355  # Actual Distance
5356  self.lineEdit_m_potc_actual_distance.setText(str(potc_class.current_potc_distance))
5357 
5358  self.potc_ros.task_time_control = False
5359  self.potc_ros.task_position_control = False
5360 
5361  @classmethod
5362  def potc_task_time_unit_func(cls, time_list, unit_type):
5363  """
5364  POTC Task Time Unit Function
5365  """
5366  new_time_list = list()
5367  unit = 1
5368 
5369  if unit_type:
5370  unit = 3600
5371 
5372  for time_value in time_list:
5373  new_time = float(time_value / unit)
5374  new_time_list.append(new_time)
5375 
5376  return new_time_list
5377 
5378  @classmethod
5379  def potc_task_position_unit_func(cls, position_list, unit_type):
5380  """
5381  POTC Task Position Unit Function
5382  """
5383  new_position_list = list()
5384  unit = 1
5385 
5386  if unit_type:
5387  unit = 1000
5388 
5389  for position in position_list:
5390  new_position = [float(position[0] / unit), float(position[1] / unit)]
5391  new_position_list.append(new_position)
5392 
5393  return new_position_list
5394 
5395 
5396  def potc_list_split_func(self, potc_list):
5397  """
5398  POTC List Split Function
5399  """
5400  potc_x_list = list()
5401  potc_y_list = list()
5402 
5403  potc_list_count = len(potc_list)
5404 
5405  for item in range(potc_list_count):
5406  potc_x_list.append(potc_list[item][0])
5407  potc_y_list.append(potc_list[item][1])
5408 
5409  return potc_x_list, potc_y_list
5410 
5411 
5412  def plot_prognostic_potc_func(self, MainWindow, x_list, y_list, title_name):
5413  """
5414  Plot Prognostic POTC Function
5415  """
5416  self.new_graph_window_prognostic_potc = QtWidgets.QMainWindow()
5417  x_value = x_list
5418  y_value = y_list
5419  title = str(title_name)
5420 
5421  self.graph_ui_prognostic_potc = Ui_StaticGraphWindow(x_value, y_value, title)
5422  self.graph_ui_prognostic_potc.setupUi(self.new_graph_window_prognostic_potc)
5423  self.new_graph_window_prognostic_potc.show()
5424 
5425 
5426  def monitoring_add_prognostic_potc_func(self, position_list, time_list):
5427  """
5428  Monitoring Add Prognostic POTC Function
5429  """
5430  prognostic_potc_keys_count = len(list(self.prognostic_potc_dict.keys()))
5431  node_count = len(position_list)
5432  task_name = str("task_" + str(prognostic_potc_keys_count + 1) + "_node_count_" + str(node_count))
5433 
5434  self.prognostic_potc_dict[str(task_name)] = {"Position": position_list, "Time": time_list}
5436 
5437 
5439  """
5440  Monitoring Prognostic POTC Function
5441  """
5442  try:
5443  system_fr = self.main_dict["System"]["Failure Rate"]["Nominal"]
5444  selected_task = str(self.comboBox_m_prognostic_potc_select_task.currentText())
5445  simulation_count = int(self.lineEdit_m_prognostic_potc_simulation_count.text())
5446 
5447  if system_fr != 0.0 and selected_task != "" and selected_task != "None" and simulation_count > 0 and str(simulation_count) != "":
5448  system_reliability = self.main_dict["System"]["Reliability"]["Nominal"]
5449  prognostic_potc_class = SimulationRobotTaskCompletion(system_fr, system_reliability, self.selected_reliability_model, self.selected_reliability_unit, self.shape_parameter)
5450  potc_position_list = self.prognostic_potc_dict[str(selected_task)]["Position"]
5451  potc_time_list = self.prognostic_potc_dict[str(selected_task)]["Time"]
5452  title = str(simulation_count) + " Count Simulation"
5453 
5454  potc_list = prognostic_potc_class.prognostic_calculate_potc_func(simulation_count, potc_time_list, potc_position_list)
5456 
5457  self.lineEdit_m_prognostic_potc.setText(str(prognostic_potc_class.simulation_potc))
5458  self.lineEdit_m_prognostic_potc_simulation_time.setText(str(prognostic_potc_class.simulation_time))
5459  self.plot_prognostic_potc_func(MainWindow, self.prognostic_potc_x_list, self.prognostic_potc_y_list, title)
5460 
5461  elif str(simulation_count) == "":
5462  self.lineEdit_m_prognostic_potc.setText(str("Simulation Count Giriniz"))
5463  self.lineEdit_m_prognostic_potc_simulation_time.setText(str("Simulation Count Giriniz"))
5464 
5465  elif selected_task == "" or selected_task == "None":
5466  self.lineEdit_m_prognostic_potc.setText(str("Lutfen Task Bekleyiniz"))
5467  self.lineEdit_m_prognostic_potc_simulation_time.setText(str("Lutfen Task Bekleyiniz"))
5468 
5469  else:
5470  self.lineEdit_m_prognostic_potc.setText(str("Failure Rate Hesaplayiniz"))
5471  self.lineEdit_m_prognostic_potc_simulation_time.setText(str("Failure Rate Hesaplayiniz"))
5472 
5473  except Exception as err:
5474  print("\nError: monitoring_prognostic_robot_task_completion_func\n")
5475  print(err)
5476 
5477 # PHM POTC FUNCTIONS - END -
5478 
5479 # ---------------------------------------------------------------------------------------------------------------
5480 
5481  def fill_the_file_with_data(self, file_dir, temp_file_name, temp_data):
5482  """
5483  Fill The File With Data Function
5484  """
5485  current_workspace = self.get_current_workspace()
5486  file_name = str(str(current_workspace) + str(file_dir) + str(temp_file_name) + '.yaml')
5487 
5488  with open(file_name, 'w') as outfile:
5489  yaml.dump(temp_data, outfile, default_flow_style=False)
5490 
5491  @classmethod
5492  def read_data_from_file(cls, selected_file):
5493  """
5494  Read Data From File Function
5495  """
5496  load_file = file(str(selected_file), 'r')
5497  temp_dict = yaml.load(load_file)
5498 
5499  return temp_dict
5500 
5501  @classmethod
5503  """
5504  Get Current Workspace Function
5505  """
5506  file_full_path = os.path.dirname(os.path.realpath(__file__))
5507  directory_name = sys.argv[0].split('/')[-2]
5508  workspace_name = file_full_path.split(str(directory_name))[0]
5509 
5510  return workspace_name
5511 
5512 
5514  """
5515  Get Failure Rate Type Function
5516  """
5517  failure_rate_type_list = list(["Nominal"])
5518  type_list = list(self.main_dict["System"]["Failure Rate"].keys())
5519  type_list.remove("Nominal")
5520  failure_rate_type_list.extend(type_list)
5521 
5522  return failure_rate_type_list
5523 
5524 # ---------------------------------------------------------------------------------------------------------------
5525 
5527  """
5528  Start Hazard Rate Sensor Based Thread Function
5529  """
5532  self.thread_hazard_rate_sensor_based.change_value.connect(self.lineEdit_m_hazard_rate_select_sensor_value.setText)
5533  self.thread_hazard_rate_sensor_based.start()
5534 
5535 # ---------------------------------------------------------------------------------------------------------------
5536 
5538  """
5539  Hazard Rate Sensor Based Thread Class
5540  """
5541  change_value = pyqtSignal(str)
5542  error = pyqtSignal()
5543  def __init__(self, ros, rate):
5544  QThread.__init__(self)
5545  self.stop_event = Event()
5546  self.ros = ros
5547  self.rate = rate
5548 
5549  def run(self):
5550  """
5551  Main Thread Function
5552  """
5553  try:
5554  while not self.stop_event.isSet():
5555  time.sleep(self.rate)
5556  read_data = str(eval("self.ros.data"))
5557  if read_data != "None":
5558  self.change_value.emit(read_data)
5559 
5560  except Exception as err:
5561  self.error.emit()
5562  raise err
5563 
5564  def stop_thread(self):
5565  """
5566  Stop Thread Function
5567  """
5568  self.stop_event.set()
5569  self.wait()
5570 
5571 
5572 if __name__ == '__main__':
5573  try:
5574  rospy.init_node('start_gui')
5575 
5576  app = QtWidgets.QApplication(sys.argv)
5577  MAIN_WINDOW = QtWidgets.QMainWindow()
5578  PHM_UI = PHMGui()
5579  PHM_UI.setupUi(MAIN_WINDOW)
5580  MAIN_WINDOW.setWindowTitle('PHM GUI')
5581  MAIN_WINDOW.show()
5582  sys.exit(app.exec_())
5583 
5584  except Exception as err:
5585  print(err)
def publisher_gui_hazard_rate_func(self)
Definition: phm_gui.py:1631
def add_new_module(self)
Definition: phm_gui.py:4856
def retranslateUi(self, MainWindow)
Definition: phm_gui.py:1296
def calculate_selected_module_fr_func(self, selected_system, object_keys, select_module_list, object_type, fr_type)
Definition: phm_gui.py:1801
def monitoring_add_prognostic_potc_func(self, position_list, time_list)
Definition: phm_gui.py:5426
lineEdit_configuration_failure_rate_first_component
Definition: phm_gui.py:699
def first_sub_module_list_tab_func(self)
Definition: phm_gui.py:3183
def add_component_into_config(self)
Definition: phm_gui.py:3051
def publisher_gui_actual_potc_func(self, publish_data)
Definition: phm_gui.py:1685
def remove_depth_level_key(cls, temp_list)
Definition: phm_gui.py:2479
def delete_component_configuration(self)
Definition: phm_gui.py:3016
def main_dict_selected_system_calculation_func(self)
Definition: phm_gui.py:1709
def remove_key(self, temp_list)
Definition: phm_gui.py:2431
def plot_prognostic_potc_func(self, MainWindow, x_list, y_list, title_name)
Definition: phm_gui.py:5412
def second_component_list_tab_func(self)
Definition: phm_gui.py:2710
def calculate_sub_module_total_fr_func(self)
Definition: phm_gui.py:4671
lineEdit_configuration_reliability_shape_parameter
Definition: phm_gui.py:956
lineEdit_configuration_failure_rate_first_sub_module
Definition: phm_gui.py:797
def remove_configurations_key(cls, temp_list)
Definition: phm_gui.py:2490
def monitoring_general_tab_func(self)
Definition: phm_gui.py:5190
def monitoring_hazard_rate_add_sensor_func(self)
Definition: phm_gui.py:5145
def system_list_tab_func(self)
Definition: phm_gui.py:2566
def add_new_component(self)
Definition: phm_gui.py:4346
def load_system_from_file(self)
Definition: phm_gui.py:2666
def calculate_formula_result(cls, component_dict)
Definition: phm_gui.py:4262
def select_final_configuration_of_module(self)
Definition: phm_gui.py:3620
def combobox_configuration_type(self)
Definition: phm_gui.py:2612
def sub_module_list_control_of_set_component_types_tab(self)
Definition: phm_gui.py:2739
pushButton_select_final_configuration_of_module
Definition: phm_gui.py:824
comboBox_configuration_st_sc_select_module
Definition: phm_gui.py:725
def delete_sub_module_configuration(self)
Definition: phm_gui.py:3502
def click_start_analysis_func(self)
Definition: phm_gui.py:1531
def potc_task_position_unit_func(cls, position_list, unit_type)
Definition: phm_gui.py:5379
def read_data_from_file(cls, selected_file)
Definition: phm_gui.py:5492
def create_syntax_of_components(self)
Definition: phm_gui.py:2894
def start_hazard_rate_sensor_based_thread_func(self, ros, rate)
Definition: phm_gui.py:5526
def main_dict_module_calculate_func(self, selected_system)
Definition: phm_gui.py:1727
def find_max_depth_level_of_component_configs(self)
Definition: phm_gui.py:3128
def system_fr_control(self)
Definition: phm_gui.py:3705
def start_phm_save_and_load_buttons_control_func(self)
Definition: phm_gui.py:2396
label_configuration_select_second_sub_module
Definition: phm_gui.py:804
def set_module_listwidget_func(self)
Definition: phm_gui.py:4888
def module_list_control_of_set_component_types_tab(self)
Definition: phm_gui.py:2726
def module_fr_control(self)
Definition: phm_gui.py:3260
def calculate_depth_level_of_component_configs(self)
Definition: phm_gui.py:2982
def set_formula_of_component(self)
Definition: phm_gui.py:4231
def configuration_setup_set_result_func(self)
Definition: phm_gui.py:2108
def calculate_depth_level_of_sub_module_configs(self)
Definition: phm_gui.py:3449
def configuration_set_type_events_func(self)
Definition: phm_gui.py:2274
def add_component_tab_func(self)
Definition: phm_gui.py:4329
def add_new_custom_component(self)
Definition: phm_gui.py:4154
def main_dict_sub_module_calculate_func(self, selected_system, selected_module)
Definition: phm_gui.py:1848
def check_type(cls, configuration_all)
Definition: phm_gui.py:2629
def combobox_hazard_rate_selection_sensor_func(self, sensor_list)
Definition: phm_gui.py:5099
def delete_component_from_configuration_func(self, selected_module, selected_sub_module, deleted_component)
Definition: phm_gui.py:4570
def monitoring_show_sensor_list_func(self)
Definition: phm_gui.py:5074
def sub_module_list_widget_func(self)
Definition: phm_gui.py:3199
def configuration_setup_sub_module_set_result_func(self)
Definition: phm_gui.py:2117
def set_shape_parameter_func(self)
Definition: phm_gui.py:4108
def first_component_list_control_of_set_component_types_tab(self)
Definition: phm_gui.py:2846
def configuration_setup_system_set_result_func(self)
Definition: phm_gui.py:2202
def calculate_set_fr_component_total_fr_func(self)
Definition: phm_gui.py:4425
def control_the_component_fr_is_changed_or_not(self)
Definition: phm_gui.py:4478
def convert_configurations_of_components_into_syntax(self)
Definition: phm_gui.py:2801
def add_new_sub_module(self)
Definition: phm_gui.py:4592
def delete_a_sub_module(self)
Definition: phm_gui.py:4806
def control_the_sub_module_fr_is_changed_or_not(self)
Definition: phm_gui.py:4744
def potc_list_split_func(self, potc_list)
Definition: phm_gui.py:5396
def convert_configurations_of_sub_modules_into_syntax(self)
Definition: phm_gui.py:3274
def remove_key_final_config(cls, temp_list)
Definition: phm_gui.py:2523
def monitoring_regeneration_potc_task_func(self)
Definition: phm_gui.py:5223
def monitoring_system_robot_task_completion_func(self)
Definition: phm_gui.py:5267
def thread_calculation_system_main_dict_func(self)
Definition: phm_gui.py:1574
def select_final_configuration_of_system(self)
Definition: phm_gui.py:4037
def component_set_fr_groupbox_control(self)
Definition: phm_gui.py:4461
def sub_module_default_equipments_groupbox_control(self)
Definition: phm_gui.py:4734
comboBox_configuration_st_sc_select_system
Definition: phm_gui.py:716
def sub_module_list_tab_func(self)
Definition: phm_gui.py:2603
def module_list_widget_func(self)
Definition: phm_gui.py:3670
def get_all_topics_func(cls)
Definition: phm_gui.py:5171
def add_module_calculate_depth_level_of_configurations(self, selected_configuration_name)
Definition: phm_gui.py:4013
def configuration_add_object_2_tab_events_func(self)
Definition: phm_gui.py:2343
def filter_reliability_func(self, main_dict)
Definition: phm_gui.py:1670
def add_component_calculate_depth_level_of_configurations(self, selected_configuration_name)
Definition: phm_gui.py:3101
def monitoring_regeneration_module_func(self)
Definition: phm_gui.py:5199
def sub_module_fr_control(self)
Definition: phm_gui.py:2787
comboBox_configuration_select_first_module
Definition: phm_gui.py:916
def calculate_selected_component_fr_func(self, selected_system, selected_module, selected_sub_module, object_keys, select_component_list, object_type)
Definition: phm_gui.py:2017
comboBox_configuration_st_sc_select_sub_module
Definition: phm_gui.py:722
def calculate_serial_parallel_fr_value_of_sub_modules(self)
Definition: phm_gui.py:3410
def monitoring_hazard_rate_set_list_widget_sensor_list_func(self, selected_item)
Definition: phm_gui.py:5160
def module_list_control_of_set_module_types_tab(self)
Definition: phm_gui.py:3758
comboBox_configuration_st_ssm_select_system
Definition: phm_gui.py:794
def delete_a_module(self)
Definition: phm_gui.py:5007
def add_sub_module_into_list_widget(self)
Definition: phm_gui.py:4719
comboBox_configuration_st_sm_select_system
Definition: phm_gui.py:877
def find_max_depth_level_of_module_configs(self)
Definition: phm_gui.py:3905
def main_dict_component_calculate_func(self, selected_system, selected_module, selected_sub_module)
Definition: phm_gui.py:1962
def potc_task_time_unit_func(cls, time_list, unit_type)
Definition: phm_gui.py:5362
def set_sub_module_listwidget_func(self)
Definition: phm_gui.py:4625
def calculate_set_fr_module_total_fr_func(self)
Definition: phm_gui.py:4947
def remove_reliability_key(cls, temp_list)
Definition: phm_gui.py:2468
def select_phm_unit_func(self)
Definition: phm_gui.py:4087
def find_max_depth_level_of_sub_module_configs(self)
Definition: phm_gui.py:3482
def calculate_serial_parallel_fr_value_of_modules(self)
Definition: phm_gui.py:3836
lineEdit_c_ao_ace_set_element_variable_name
Definition: phm_gui.py:524
pushButton_select_final_configuration_of_sub_module
Definition: phm_gui.py:696
def remove_elements_key(cls, temp_list)
Definition: phm_gui.py:2501
def sub_module_add_equipment_func(self, MainWindow)
Definition: phm_gui.py:4787
lineEdit_configuration_failure_rate_sub_module
Definition: phm_gui.py:679
def control_component_formula(self)
Definition: phm_gui.py:4277
def monitoring_hazard_rate_select_place_func(self)
Definition: phm_gui.py:5131
def select_reliability_model_func(self)
Definition: phm_gui.py:4065
def get_failure_rate_type_func(self)
Definition: phm_gui.py:5513
def start_phm_gui_main_dict_func(self)
Definition: phm_gui.py:2537
def monitoring_events_func(self)
Definition: phm_gui.py:5060
def remove_configuration_count_key(cls, temp_list)
Definition: phm_gui.py:2446
def delete_module_from_configuration_func(self, deleted_module)
Definition: phm_gui.py:5038
def fill_the_file_with_data(self, file_dir, temp_file_name, temp_data)
Definition: phm_gui.py:5481
def first_sub_module_list_control_of_set_sub_module_types_tab(self)
Definition: phm_gui.py:3319
listWidget_monitoring_hazard_rate_sensor_list
Definition: phm_gui.py:1007
def start_set_reliability_model_and_unit_func(self)
Definition: phm_gui.py:1546
comboBox_m_sys_select_module_reliability_type
Definition: phm_gui.py:1114
def second_component_list_control_of_set_component_types_tab(self)
Definition: phm_gui.py:2870
def monitoring_regeneration_system_failure_type_func(self)
Definition: phm_gui.py:5212
def add_sub_module_calculate_depth_level_of_configurations(self, selected_configuration_name)
Definition: phm_gui.py:3593
def component_list_control_of_set_component_types_tab(self)
Definition: phm_gui.py:2754
def select_final_configuration_of_sub_module(self)
Definition: phm_gui.py:3149
def thread_temperature_sensors_func(self)
Definition: phm_gui.py:1613
def save_system_into_file(self)
Definition: phm_gui.py:2645
def delete_sub_module_from_configuration_func(self, selected_module, deleted_sub_module)
Definition: phm_gui.py:4834
comboBox_configuration_select_first_sub_module
Definition: phm_gui.py:791
def monitoring_module_reliability_func(self)
Definition: phm_gui.py:5239
def calculate_set_fr_sub_module_total_fr_func(self)
Definition: phm_gui.py:4695
def publisher_gui_reliability_func(self)
Definition: phm_gui.py:1658
def add_component_element_tab_func(self)
Definition: phm_gui.py:4124
def delete_module_configuration(self)
Definition: phm_gui.py:3924
comboBox_configuration_select_second_module
Definition: phm_gui.py:880
def setupUi(self, MainWindow)
Definition: phm_gui.py:89
def combobox_hazard_rate_select_sensor_func(self)
Definition: phm_gui.py:5109
lineEdit_configuration_failure_rate_second_module
Definition: phm_gui.py:860
def add_module_into_config(self)
Definition: phm_gui.py:3965
def set_only_component_fr(self)
Definition: phm_gui.py:4380
def module_list_tab_func(self)
Definition: phm_gui.py:2590
lineEdit_configuration_failure_rate_module
Definition: phm_gui.py:747
def add_component_into_list_widget(self)
Definition: phm_gui.py:4442
def publisher_gui_predict_potc_func(self, publish_data)
Definition: phm_gui.py:1695
def component_default_equipments_groupbox_control(self)
Definition: phm_gui.py:4468
def phm_temperature_sensor_thread_func(self)
Definition: phm_gui.py:2246
def monitoring_prognostic_robot_task_completion_func(self, MainWindow)
Definition: phm_gui.py:5438
def component_add_equipment_func(self)
Definition: phm_gui.py:4522
def general_set_result_func(self)
Definition: phm_gui.py:2075
def add_module_into_am_list_widget(self)
Definition: phm_gui.py:4902
comboBox_configuration_select_second_sub_module
Definition: phm_gui.py:830
def general_threads_func(self)
Definition: phm_gui.py:1560
def component_list_widget_func(self)
Definition: phm_gui.py:2718
def delete_an_element(self)
Definition: phm_gui.py:4297
def sub_module_list_control_of_set_sub_module_types_tab(self)
Definition: phm_gui.py:3222
def system_list_control_of_set_module_types_tab(self)
Definition: phm_gui.py:3678
def second_sub_module_list_control_of_set_sub_module_types_tab(self)
Definition: phm_gui.py:3342
def set_only_module_fr(self)
Definition: phm_gui.py:4934
lineEdit_configuration_failure_rate_system
Definition: phm_gui.py:930
comboBox_configuration_st_ssm_select_module
Definition: phm_gui.py:785
def add_module_into_combobox(self)
Definition: phm_gui.py:4915
def control_of_configuration_list(self, args)
Definition: phm_gui.py:2407
pushButton_configuration_set_sub_module_type
Definition: phm_gui.py:759
def sub_module_set_fr_groupbox_control(self)
Definition: phm_gui.py:4727
pushButton_m_prognostic_potc_start_simulation
Definition: phm_gui.py:1254
def calculate_depth_level_of_module_configs(self)
Definition: phm_gui.py:3874
def first_component_list_tab_func(self)
Definition: phm_gui.py:2702
def first_module_list_tab_func(self)
Definition: phm_gui.py:3654
pushButton_select_final_configuration_of_system
Definition: phm_gui.py:937
def calculate_serial_parallel_fr_value_of_components(self)
Definition: phm_gui.py:2941
def add_elements_into_list_widget(self)
Definition: phm_gui.py:4210
def module_list_control_of_set_sub_module_types_tab(self)
Definition: phm_gui.py:3207
def create_syntax_of_modules(self)
Definition: phm_gui.py:3792
def configuration_setup_module_set_result_func(self)
Definition: phm_gui.py:2160
label_configuration_select_first_sub_module
Definition: phm_gui.py:801
def remove_formula_key(cls, temp_list)
Definition: phm_gui.py:2512
def get_current_workspace(cls)
Definition: phm_gui.py:5502
def add_component_element_tab_func_2(self)
Definition: phm_gui.py:4137
def second_sub_module_list_tab_func(self)
Definition: phm_gui.py:3191
def create_syntax_of_sub_modules(self)
Definition: phm_gui.py:3365
def second_module_list_tab_func(self)
Definition: phm_gui.py:3662
def set_component_fr_from_default_equipments(self)
Definition: phm_gui.py:4394
def thread_monitoring_system_potc_func(self)
Definition: phm_gui.py:1598
def add_elements(self, selected_module, selected_sub_module, component_name, element_name, element_variable_name, element_value)
Definition: phm_gui.py:4179
def set_sub_module_fr_from_default_equipments(self)
Definition: phm_gui.py:4657
lineEdit_configuration_failure_rate_first_module
Definition: phm_gui.py:864
def calculate_component_total_fr_func(self)
Definition: phm_gui.py:4408
def control_the_module_fr_is_changed_or_not(self)
Definition: phm_gui.py:4971
lineEdit_configuration_failure_rate_second_sub_module
Definition: phm_gui.py:751
def filter_hazard_rate_func(self, main_dict)
Definition: phm_gui.py:1643
def calculate_selected_sub_module_fr_func(self, selected_system, selected_module, object_keys, select_sub_module_list, object_type)
Definition: phm_gui.py:1928
def sorted_list_for_depth_level(cls, configuration_dict, configuration_list, depth_level)
Definition: phm_gui.py:2051
def set_only_sub_module_fr(self)
Definition: phm_gui.py:4643
def delete_a_component(self)
Definition: phm_gui.py:4541
def add_sub_module_into_config(self)
Definition: phm_gui.py:3544
def convert_configurations_of_modules_into_syntax(self)
Definition: phm_gui.py:3717
lineEdit_configuration_failure_rate_second_component
Definition: phm_gui.py:731
def remove_fr_key(cls, temp_list)
Definition: phm_gui.py:2457


phm_start
Author(s):
autogenerated on Thu Aug 13 2020 16:41:50