mg-pso-gui 0.1.191__py3-none-any.whl → 0.1.193__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mg_pso_gui-0.1.191.dist-info → mg_pso_gui-0.1.193.dist-info}/METADATA +1 -1
- {mg_pso_gui-0.1.191.dist-info → mg_pso_gui-0.1.193.dist-info}/RECORD +9 -8
- mgpsogui/gui/OptionManager.py +34 -1
- mgpsogui/gui/SetupTab/ListEditor.py +74 -0
- mgpsogui/gui/SetupTab/StepView.py +36 -5
- mgpsogui/gui/VisualizeTab/MatrixEditor.py +5 -7
- {mg_pso_gui-0.1.191.dist-info → mg_pso_gui-0.1.193.dist-info}/WHEEL +0 -0
- {mg_pso_gui-0.1.191.dist-info → mg_pso_gui-0.1.193.dist-info}/entry_points.txt +0 -0
- {mg_pso_gui-0.1.191.dist-info → mg_pso_gui-0.1.193.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,7 @@ mgpsogui/__init__.py,sha256=q7AfBjeJABnFtbsZnsObpUwaXKPDVYtz46G6MKXLF74,42
|
|
2
2
|
mgpsogui/mgpsogui.py,sha256=NIZmyNcbwC8EgSwf1ubdMUSJscrIEgoD4jLYziqHQ-k,148
|
3
3
|
mgpsogui/start.yaml,sha256=ZjCVLb-MLqAxrGRm9kA7_SDpa-45EuKIELNQ2QqCAiU,4713
|
4
4
|
mgpsogui/gui/HomePage.py,sha256=S4vm9gtwoWjfbNmFSX5e-_l18ti0YIFulrH9a3v953s,22845
|
5
|
-
mgpsogui/gui/OptionManager.py,sha256=
|
5
|
+
mgpsogui/gui/OptionManager.py,sha256=CmwUV6FdgBf1DN8EhCVM1IRptCGVlArZFjpgWvHUwpE,14807
|
6
6
|
mgpsogui/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
mgpsogui/gui/PlatformTab/PlatformTab.py,sha256=q8x_tvVgSoyGINuQbivXRThF3gaSSfg8X_dsLSPv4F0,10492
|
8
8
|
mgpsogui/gui/PlatformTab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -12,13 +12,14 @@ mgpsogui/gui/SetupTab/BoundsEditorWindow.py,sha256=_6_xEl46PY9MmNvpmoMNdNDbVav6O
|
|
12
12
|
mgpsogui/gui/SetupTab/BoundsList.py,sha256=L77UEaUJNiUE-ZsYIl44tWRb1zBfxaEQ-bAG1V5_IH0,12268
|
13
13
|
mgpsogui/gui/SetupTab/CalibrationParametersView.py,sha256=ppVBHG3nphku9-P6Z8az-HTpgk8vHxnj-A5m80BZTgA,2784
|
14
14
|
mgpsogui/gui/SetupTab/FunctionsList.py,sha256=tUqW43VWpxFpdo9UHaPvFQ0CtCo9mFI3mri52ikntrE,4092
|
15
|
+
mgpsogui/gui/SetupTab/ListEditor.py,sha256=62QQntINnSGxHmT5yX9uJ2k9mI4nDOPxAkHEHTdSrsU,3215
|
15
16
|
mgpsogui/gui/SetupTab/ListParametersView.py,sha256=wYcDcaooYkw-y7XW6dJUwhTWxLuUUOK5tGUFVHBf3ck,7352
|
16
17
|
mgpsogui/gui/SetupTab/OptimalParameterView.py,sha256=VKn-4BlVyqspFIOkbWsM0q9pYVsmqnSND0xP2hDKb60,1785
|
17
18
|
mgpsogui/gui/SetupTab/SetupTab.py,sha256=_cehQwQhDbX92da_AwqYQ2mQo7sFDGkN1IsYQmctK5o,2776
|
18
19
|
mgpsogui/gui/SetupTab/StaticParameterView.py,sha256=iEG-UpBBlAJabZo3MG768oLqOROjUPc23tKOSd47IUc,2739
|
19
|
-
mgpsogui/gui/SetupTab/StepView.py,sha256=
|
20
|
+
mgpsogui/gui/SetupTab/StepView.py,sha256=0WwamCZRSpZlC7EThXr6-IMCQt8ejfyQtsRppAm2v18,9067
|
20
21
|
mgpsogui/gui/SetupTab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
mgpsogui/gui/VisualizeTab/MatrixEditor.py,sha256=
|
22
|
+
mgpsogui/gui/VisualizeTab/MatrixEditor.py,sha256=JPQmfljdddIwHtTKpFqUdk7hRzVdX-IKl4neOk3DsjM,3132
|
22
23
|
mgpsogui/gui/VisualizeTab/SideBar.py,sha256=o-6vdHNZMNsdG7zC-B14hLZXbqNKhT_9q_kYg2ZSUbk,21947
|
23
24
|
mgpsogui/gui/VisualizeTab/VisualizeTab.py,sha256=_SiRDUvYJ7VUmMZ_VzylWP2tFygbLzWeUCGW3TU3yZM,3466
|
24
25
|
mgpsogui/gui/VisualizeTab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -59,8 +60,8 @@ mgpsogui/util/recosu/utils/trace_writer.py,sha256=V9BJlOjCbNYGoXGEk3CF5wjifBxvar
|
|
59
60
|
mgpsogui/util/recosu/utils/utils.py,sha256=QB8vftq3142ekG0ORjz0ZBHU5YknXbR0oTsrxrPAsF0,3951
|
60
61
|
mgpsogui/util/recosu/utils/plot/__init__.py,sha256=h1KjM7_tNDv351pcwt8A6Ibb1jhwWyx5Gbu-zj-sI3Q,71
|
61
62
|
mgpsogui/util/recosu/utils/plot/cost_steps.py,sha256=1Ce11AJyweWkmvjXPxEygzS-h8yVLmQEDLS53yjPLqQ,3779
|
62
|
-
mg_pso_gui-0.1.
|
63
|
-
mg_pso_gui-0.1.
|
64
|
-
mg_pso_gui-0.1.
|
65
|
-
mg_pso_gui-0.1.
|
66
|
-
mg_pso_gui-0.1.
|
63
|
+
mg_pso_gui-0.1.193.dist-info/METADATA,sha256=bSrGVk4AsPiIAMf2_yDjrzktl22wAUpAVGfUduc8nZA,9456
|
64
|
+
mg_pso_gui-0.1.193.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
|
65
|
+
mg_pso_gui-0.1.193.dist-info/entry_points.txt,sha256=jg82VOFjR1XDGrchs1wJSCqKYE4Ozv12aBcCSp--koA,117
|
66
|
+
mg_pso_gui-0.1.193.dist-info/top_level.txt,sha256=y7JuS9xJN5YdxUsQ3PSVjN8MzQAnR146bP3ZN3PYWdE,9
|
67
|
+
mg_pso_gui-0.1.193.dist-info/RECORD,,
|
mgpsogui/gui/OptionManager.py
CHANGED
@@ -15,7 +15,10 @@ class OptionManager():
|
|
15
15
|
"mode": sv(),
|
16
16
|
"files": {},
|
17
17
|
"calibration_parameters": [],
|
18
|
-
"figure_parameters": []
|
18
|
+
"figure_parameters": [],
|
19
|
+
"sensitivity_parameters": [],
|
20
|
+
"sensitivity_positiveBestMetrics": [],
|
21
|
+
"sensitivity_negativeBestMetrics": []}
|
19
22
|
self.steps = []
|
20
23
|
self.service_parameters = {}
|
21
24
|
|
@@ -33,6 +36,9 @@ class OptionManager():
|
|
33
36
|
self.arguments['files'] = {}
|
34
37
|
self.arguments['calibration_parameters'].clear()
|
35
38
|
self.arguments['figure_parameters'].clear()
|
39
|
+
self.arguments['sensitivity_parameters'].clear()
|
40
|
+
self.arguments['sensitivity_positiveBestMetrics'].clear()
|
41
|
+
self.arguments['sensitivity_negativeBestMetrics'].clear()
|
36
42
|
self.steps = []
|
37
43
|
self.service_parameters = {}
|
38
44
|
|
@@ -199,6 +205,24 @@ class OptionManager():
|
|
199
205
|
obj["name"].set(key)
|
200
206
|
obj["value"].set(value)
|
201
207
|
self.arguments["figure_parameters"].append(obj)
|
208
|
+
|
209
|
+
def add_sensitivity_param(self, key, value):
|
210
|
+
obj = {"name": sv(), "value": sv()}
|
211
|
+
obj["name"].set(key)
|
212
|
+
obj["value"].set(value)
|
213
|
+
self.arguments["sensitivity_parameters"].append(obj)
|
214
|
+
|
215
|
+
def add_sensitivity_positiveBestMetrics(self, key, value):
|
216
|
+
obj = {"name": sv(), "value": sv()}
|
217
|
+
obj["name"].set(key)
|
218
|
+
obj["value"].set(value)
|
219
|
+
self.arguments["sensitivity_positiveBestMetrics"].append(obj)
|
220
|
+
|
221
|
+
def add_sensitivity_negativeBestMetrics(self, key, value):
|
222
|
+
obj = {"name": sv(), "value": sv()}
|
223
|
+
obj["name"].set(key)
|
224
|
+
obj["value"].set(value)
|
225
|
+
self.arguments["sensitivity_negativeBestMetrics"].append(obj)
|
202
226
|
|
203
227
|
def move_argument_up(self, index):
|
204
228
|
if index > 0:
|
@@ -227,6 +251,15 @@ class OptionManager():
|
|
227
251
|
|
228
252
|
def remove_figure_parameter(self, index):
|
229
253
|
self.arguments["figure_parameters"].pop(index)
|
254
|
+
|
255
|
+
def remove_sensitivity_parameter(self, index):
|
256
|
+
self.arguments["sensitivity_parameters"].pop(index)
|
257
|
+
|
258
|
+
def remove_sensitivity_positiveBestMetrics(self, index):
|
259
|
+
self.arguments["sensitivity_positiveBestMetrics"].pop(index)
|
260
|
+
|
261
|
+
def remove_sensitivity_negativeBestMetrics(self, index):
|
262
|
+
self.arguments["sensitivity_negativeBestMetrics"].pop(index)
|
230
263
|
|
231
264
|
def remove_step(self, index):
|
232
265
|
self.steps.pop(index)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
from customtkinter import CTkScrollableFrame
|
2
|
+
from customtkinter import CTkFrame
|
3
|
+
from customtkinter import CTkLabel
|
4
|
+
from customtkinter import CTkButton
|
5
|
+
from customtkinter import CTkEntry
|
6
|
+
from customtkinter import CTkOptionMenu
|
7
|
+
import tkinter as tk
|
8
|
+
|
9
|
+
global option_manager
|
10
|
+
|
11
|
+
class ListEditor(CTkFrame):
|
12
|
+
def __init__(self, *args,
|
13
|
+
option_manager: None,
|
14
|
+
home_page: None,
|
15
|
+
columns: None,
|
16
|
+
parameter_name: None,
|
17
|
+
parameter_remove_func: None,
|
18
|
+
parameter_add_func: None,
|
19
|
+
**kwargs):
|
20
|
+
super().__init__(*args, **kwargs)
|
21
|
+
|
22
|
+
self.option_manager = option_manager
|
23
|
+
self.home_page = home_page
|
24
|
+
self.columns = columns
|
25
|
+
self.parameter_name = parameter_name
|
26
|
+
self.parameter_remove_func = parameter_remove_func
|
27
|
+
self.parameter_add_func = parameter_add_func
|
28
|
+
self.key_values = option_manager.get_arguments()[self.parameter_name]
|
29
|
+
self.edit_mode = False
|
30
|
+
|
31
|
+
self.render()
|
32
|
+
|
33
|
+
def clear(self):
|
34
|
+
self.containerFrame.destroy()
|
35
|
+
|
36
|
+
def set_columns(self, columns):
|
37
|
+
self.columns = columns
|
38
|
+
|
39
|
+
def toggle_edit_mode(self):
|
40
|
+
self.clear()
|
41
|
+
self.edit_mode = not self.edit_mode
|
42
|
+
self.render()
|
43
|
+
|
44
|
+
def render(self):
|
45
|
+
row = 0
|
46
|
+
index = 0
|
47
|
+
|
48
|
+
self.containerFrame = CTkFrame(self)
|
49
|
+
self.containerFrame.grid(row=0, column=0, padx=(0, 0), pady=(0, 0), sticky="new")
|
50
|
+
self.containerFrame.grid_columnconfigure((0, 1), weight=1)
|
51
|
+
|
52
|
+
CTkLabel(self.containerFrame, text="TITLE:").grid(row=row, column=0, columnspan=2, padx=5, pady=5, sticky="ew")
|
53
|
+
row += 1
|
54
|
+
|
55
|
+
for key_value_pair in self.key_values:
|
56
|
+
if self.edit_mode:
|
57
|
+
bb = CTkOptionMenu(self.containerFrame, values=self.columns, variable=self.key_values[index]["value"])
|
58
|
+
bb.grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
59
|
+
|
60
|
+
return_func = lambda index=index: (self.clear(), self.parameter_remove_func(index), self.render())
|
61
|
+
CTkButton(self.containerFrame, text="Remove", command=return_func).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
62
|
+
else:
|
63
|
+
bb = CTkOptionMenu(self.containerFrame, values=self.columns, variable=self.key_values[index]["value"])
|
64
|
+
bb.grid(row=row, column=0, columnspan=2, padx=(5, 5), pady=(5, 5), sticky="ew")
|
65
|
+
row += 1
|
66
|
+
index += 1
|
67
|
+
|
68
|
+
if self.edit_mode:
|
69
|
+
CTkButton(self.containerFrame, text="Exit", command=self.toggle_edit_mode).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
70
|
+
else:
|
71
|
+
CTkButton(self.containerFrame, text="Edit", command=self.toggle_edit_mode).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
72
|
+
|
73
|
+
add_key_func = lambda: (self.clear(), self.parameter_add_func("Param " + str(len(self.key_values)) , self.columns[2]), self.render())
|
74
|
+
CTkButton(self.containerFrame, text="Add Figure", command=add_key_func).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
@@ -10,6 +10,7 @@ import os
|
|
10
10
|
|
11
11
|
from . import BoundsList
|
12
12
|
from . import FunctionsList
|
13
|
+
from . import ListEditor
|
13
14
|
|
14
15
|
|
15
16
|
class StepView(CTkScrollableFrame):
|
@@ -105,7 +106,7 @@ class StepView(CTkScrollableFrame):
|
|
105
106
|
|
106
107
|
row += 1
|
107
108
|
|
108
|
-
if step['open'] or (self.mode == "Sampling: Halton" or self.mode == "Sampling: Random"):
|
109
|
+
if step['open'] or (self.mode == "Sampling: Halton" or self.mode == "Sampling: Random" or self.mode == "Sensitivity Analysis"):
|
109
110
|
bounds = BoundsList.BoundsList(
|
110
111
|
self.containerFrame, option_manager=self.option_manager, step_index=index)
|
111
112
|
bounds.grid(row=row, column=0, padx=(10, 10),
|
@@ -131,10 +132,40 @@ class StepView(CTkScrollableFrame):
|
|
131
132
|
CTkButton(self.containerFrame, text="Add Group", command=self.create_new_step).grid(
|
132
133
|
row=row, columnspan=2, column=0, padx=(10, 10), pady=(10, 10), sticky="ew")
|
133
134
|
|
134
|
-
if (self.mode == "Sensitivity Analysis"):
|
135
|
+
if (self.mode == "Sampling: Halton" or self.mode == "Sampling: Random" or self.mode == "Sensitivity Analysis"):
|
135
136
|
self.analysisFrame = CTkFrame(self)
|
136
137
|
self.analysisFrame.grid(row=2, column=0, columnspan=2, padx=(10, 10), pady=(10, 10), sticky="nsew")
|
137
138
|
self.analysisFrame.grid_columnconfigure((0, 1, 2), weight=1)
|
138
|
-
|
139
|
-
|
140
|
-
|
139
|
+
|
140
|
+
columns = ["n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9", "n10"]
|
141
|
+
|
142
|
+
self.params_editor = ListEditor.ListEditor(self.containerFrame, option_manager=self.option_manager,
|
143
|
+
home_page=self.home_page,
|
144
|
+
columns=columns,
|
145
|
+
parameter_name="sensitivity_parameters",
|
146
|
+
parameter_remove_func=self.option_manager.remove_sensitivity_parameter,
|
147
|
+
parameter_add_func=self.option_manager.add_sensitivity_param)
|
148
|
+
self.params_editor.grid(row=0, rowspan=0, column=0, padx=(10, 10), pady=(10, 0), sticky="nsew")
|
149
|
+
self.params_editor.grid_columnconfigure(0, weight=1)
|
150
|
+
self.params_editor.grid_rowconfigure(0, weight=1)
|
151
|
+
|
152
|
+
|
153
|
+
self.positive_editor = ListEditor.ListEditor(self.containerFrame, option_manager=self.option_manager,
|
154
|
+
home_page=self.home_page,
|
155
|
+
columns=columns,
|
156
|
+
parameter_name="sensitivity_positiveBestMetrics",
|
157
|
+
parameter_remove_func=self.option_manager.remove_sensitivity_positiveBestMetrics,
|
158
|
+
parameter_add_func=self.option_manager.add_sensitivity_positiveBestMetrics)
|
159
|
+
self.positive_editor.grid(row=0, rowspan=0, column=1, padx=(10, 10), pady=(10, 0), sticky="nsew")
|
160
|
+
self.positive_editor.grid_columnconfigure(0, weight=1)
|
161
|
+
self.positive_editor.grid_rowconfigure(0, weight=1)
|
162
|
+
|
163
|
+
self.negative_editor = ListEditor.ListEditor(self.containerFrame, option_manager=self.option_manager,
|
164
|
+
home_page=self.home_page,
|
165
|
+
columns=columns,
|
166
|
+
parameter_name="sensitivity_negativeBestMetrics",
|
167
|
+
parameter_remove_func=self.option_manager.add_sensitivity_negativeBestMetrics,
|
168
|
+
parameter_add_func=self.option_manager.remove_sensitivity_negativeBestMetrics)
|
169
|
+
self.negative_editor.grid(row=0, rowspan=0, column=2, padx=(10, 10), pady=(10, 0), sticky="nsew")
|
170
|
+
self.negative_editor.grid_columnconfigure(0, weight=1)
|
171
|
+
self.negative_editor.grid_rowconfigure(0, weight=1)
|
@@ -39,22 +39,20 @@ class MatrixEditor(CTkFrame):
|
|
39
39
|
row = 0
|
40
40
|
index = 0
|
41
41
|
|
42
|
-
self.containerFrame = CTkFrame(self
|
43
|
-
self.containerFrame.grid(row=0, column=0, padx=(0, 0), pady=(0, 0), sticky="
|
42
|
+
self.containerFrame = CTkFrame(self)
|
43
|
+
self.containerFrame.grid(row=0, column=0, padx=(0, 0), pady=(0, 0), sticky="new")
|
44
44
|
self.containerFrame.grid_columnconfigure((0, 1), weight=1)
|
45
45
|
|
46
|
-
CTkLabel(self.containerFrame, text="X Axes:").grid(row=row, column=0, columnspan=2, padx=5, pady=5, sticky="")
|
46
|
+
CTkLabel(self.containerFrame, text="X Axes:").grid(row=row, column=0, columnspan=2, padx=5, pady=5, sticky="ew")
|
47
47
|
row += 1
|
48
48
|
|
49
49
|
for key_value_pair in self.key_values:
|
50
|
-
#CTkLabel(self.containerFrame, text=self.key_values[index]["name"].get()).grid(row=row, column=0, padx=5, pady=5, sticky="")
|
51
|
-
|
52
50
|
if self.edit_mode:
|
53
|
-
bb = CTkOptionMenu(self.containerFrame, values=self.columns,
|
51
|
+
bb = CTkOptionMenu(self.containerFrame, values=self.columns, variable=self.key_values[index]["value"], command=self.home_page.update_graph)
|
54
52
|
bb.grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
55
53
|
|
56
54
|
return_func = lambda index=index: (self.clear(), self.option_manager.remove_figure_parameter(index), self.home_page.update_graph(0), self.render())
|
57
|
-
CTkButton(self.containerFrame, text="Remove",
|
55
|
+
CTkButton(self.containerFrame, text="Remove", command=return_func).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
58
56
|
else:
|
59
57
|
bb = CTkOptionMenu(self.containerFrame, values=self.columns, variable=self.key_values[index]["value"], command=self.home_page.update_graph)
|
60
58
|
bb.grid(row=row, column=0, columnspan=2, padx=(5, 5), pady=(5, 5), sticky="ew")
|
File without changes
|
File without changes
|
File without changes
|