mg-pso-gui 0.2.98__py3-none-any.whl → 0.2.100__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.2.98
3
+ Version: 0.2.100
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -2,22 +2,22 @@ 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=qnrbwfWKuSX6z2BEuRwLMfCe88WC55dFbBbvEe5PtFI,23626
5
- mgpsogui/gui/OptionManager.py,sha256=d-di4I9m9h0cPaKjnooTLf-QOqgIxYXbJma97EvP36I,21723
5
+ mgpsogui/gui/OptionManager.py,sha256=DxbhmMuOJWuTf3HwgexqyypokD0DYrrsRyKs_GE_VVE,22465
6
6
  mgpsogui/gui/OptionManager_backup.py,sha256=TCWfPnHL2foN5id47jsi267lamRG6yGU6y_M29eOOJk,18530
7
7
  mgpsogui/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  mgpsogui/gui/General/NoticeWindow.py,sha256=HcTtaYKK4b7HognnoAHXiIHZWAXI80QfR8HM2dTLTV8,1866
9
- mgpsogui/gui/General/ParameterView.py,sha256=to57aODZOQXC52Pjcw_dYCRcf50WKj73SkLdb3i7wps,9493
9
+ mgpsogui/gui/General/ParameterView.py,sha256=vLTmBEliBnHcwDUYCrnOWQvR887OyujVT8Lm-Y08qCQ,10071
10
10
  mgpsogui/gui/General/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  mgpsogui/gui/PlatformTab/PlatformTab.py,sha256=8J2Aa3Zrh1q9x07zZ0Ap9PgwHjeSKOYyj6wlxx40udw,10985
12
12
  mgpsogui/gui/PlatformTab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  mgpsogui/gui/RunTab/OptimalParameterView.py,sha256=nliUEWA840cPBQt7wjiZ-L7uBOp_ozzJhyBkL08fJzI,1752
14
- mgpsogui/gui/RunTab/RunTab.py,sha256=47_r8K-e7f8zs93_2iPYnNBzHDHZejtedk7iSElkubU,5608
14
+ mgpsogui/gui/RunTab/RunTab.py,sha256=_JWzDx5LT_uISw0Vnv-W2ypIeuKgoWqBnvFnvrLhNQA,5917
15
15
  mgpsogui/gui/RunTab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  mgpsogui/gui/SetupTab/BoundsEditorWindow.py,sha256=U64oaiDIOaimjbqKMz5rQNq2o1SrQtrRHDdTYQ9ux1s,2870
17
- mgpsogui/gui/SetupTab/BoundsList.py,sha256=UyXKujyZ3zOhgaLpICzLx-pm5RYsQOkwagZ75z9w9Hc,15204
17
+ mgpsogui/gui/SetupTab/BoundsList.py,sha256=bc1g2LLdmxkVk_Gnr-koxsxw8342IWFzpaDXu27pJD4,15231
18
18
  mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py,sha256=yx0dHSNa7fGy99Q6qFcI6j9r8p0DlV3iOBgyPMGd8pM,2884
19
19
  mgpsogui/gui/SetupTab/CustomFunctionMetrics.py,sha256=vOJpElbTgz043m6JYwe9xz_2MBHg985S6KdbJkJERW4,5923
20
- mgpsogui/gui/SetupTab/FunctionsList.py,sha256=LoHu5FESu6e_QRucNVm8tuSXLl1aLoGYd9r7WOKFTaY,7059
20
+ mgpsogui/gui/SetupTab/FunctionsList.py,sha256=6oFS8qKF3OCtxNi5aY5Rj_ovM9nv4-vh-oT_CbhVTj4,7043
21
21
  mgpsogui/gui/SetupTab/ListEditor.py,sha256=nin7Pl8z7d_yfKoAxM-yVS34uhj-LnprJ2mNRSB7Z0A,3197
22
22
  mgpsogui/gui/SetupTab/ListParametersView.py,sha256=mkGaC5cXhEOy5oD0MbTyK9z7VGZp019oK2Y8Ay-n05Q,7460
23
23
  mgpsogui/gui/SetupTab/OverrideParameterMetrics.py,sha256=rBfaSitYDOajbHvyi2TfoXAHYlz1cCt028UVpIJ_Dc0,3369
@@ -48,7 +48,7 @@ mgpsogui/gui/images/trash.png,sha256=j8cf0kWbJd-4Jp20lUVV1o1NSeQ4v1Ej4gfcIA3DVRQ
48
48
  mgpsogui/gui/images/up.png,sha256=AQvFWCUqSQNaQ1E6LKZ9zNfSvW6t4mgy8uswdg9T2Hg,2457
49
49
  mgpsogui/gui/messages/welcome.txt,sha256=KzN_Zk3vaZeXx-G2KJmd5I7Q1_Shw62E9Fx8U4rQuUQ,5674
50
50
  mgpsogui/util/GraphGenerator.py,sha256=LHHDCvBuJQ0RYQm0azi5tC-etrZ1KLQh-tkahVurPSI,31990
51
- mgpsogui/util/PSORunner.py,sha256=MjK0xlKT88Pf5vk5U--xMnWJzqZGBAOR8n6AQMaYElc,15622
51
+ mgpsogui/util/PSORunner.py,sha256=mTveURj8HGCwB5VHzvN9ELUhKtVzuynuQc8zJm4IFNs,15764
52
52
  mgpsogui/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  mgpsogui/util/debug.py,sha256=Swzny9_1S-CCONWGssj9iDoSpbwu5Vr4f95g_9L8bec,19759
54
54
  mgpsogui/util/helpers.py,sha256=Ht2rge_4pGO7halz6KoLsL2eukB0k2tlkx68lBBmBA8,2669
@@ -73,8 +73,8 @@ mgpsogui/util/recosu/utils/trace_writer.py,sha256=V9BJlOjCbNYGoXGEk3CF5wjifBxvar
73
73
  mgpsogui/util/recosu/utils/utils.py,sha256=QB8vftq3142ekG0ORjz0ZBHU5YknXbR0oTsrxrPAsF0,3951
74
74
  mgpsogui/util/recosu/utils/plot/__init__.py,sha256=h1KjM7_tNDv351pcwt8A6Ibb1jhwWyx5Gbu-zj-sI3Q,71
75
75
  mgpsogui/util/recosu/utils/plot/cost_steps.py,sha256=1Ce11AJyweWkmvjXPxEygzS-h8yVLmQEDLS53yjPLqQ,3779
76
- mg_pso_gui-0.2.98.dist-info/METADATA,sha256=ekBafcNKgLuq4c_qlN4Mwmx_V17NXcQOzXXS0teTJ0M,9455
77
- mg_pso_gui-0.2.98.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
78
- mg_pso_gui-0.2.98.dist-info/entry_points.txt,sha256=jg82VOFjR1XDGrchs1wJSCqKYE4Ozv12aBcCSp--koA,117
79
- mg_pso_gui-0.2.98.dist-info/top_level.txt,sha256=y7JuS9xJN5YdxUsQ3PSVjN8MzQAnR146bP3ZN3PYWdE,9
80
- mg_pso_gui-0.2.98.dist-info/RECORD,,
76
+ mg_pso_gui-0.2.100.dist-info/METADATA,sha256=gO9mSWuiVGxGJXQA-FQ5J4TTtNm6w1OyP8uBmSWLPi8,9456
77
+ mg_pso_gui-0.2.100.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
78
+ mg_pso_gui-0.2.100.dist-info/entry_points.txt,sha256=jg82VOFjR1XDGrchs1wJSCqKYE4Ozv12aBcCSp--koA,117
79
+ mg_pso_gui-0.2.100.dist-info/top_level.txt,sha256=y7JuS9xJN5YdxUsQ3PSVjN8MzQAnR146bP3ZN3PYWdE,9
80
+ mg_pso_gui-0.2.100.dist-info/RECORD,,
@@ -81,21 +81,32 @@ class ParameterView(CTkScrollableFrame):
81
81
  hour = sv()
82
82
  minute = sv()
83
83
  second = sv()
84
- date_time = om_text_var.get().split(" ")
85
- vv = date_time[0].split("-")
86
- ss = date_time[1].split(":")
87
- year.set(vv[0])
88
- month.set(vv[1])
89
- day.set(vv[2])
90
- hour.set(ss[0])
91
- minute.set(ss[1])
92
- second.set(ss[2])
84
+
85
+ year.set("2021")
86
+ month.set("01")
87
+ day.set("01")
88
+ hour.set("00")
89
+ minute.set("00")
90
+ second.set("00")
91
+
92
+ try:
93
+ date_time = om_text_var.get().split(" ")
94
+ vv = date_time[0].split("-")
95
+ ss = date_time[1].split(":")
96
+ year.set(vv[0])
97
+ month.set(vv[1])
98
+ day.set(vv[2])
99
+ hour.set(ss[0])
100
+ minute.set(ss[1])
101
+ second.set(ss[2])
102
+ except Exception as e:
103
+ pass
93
104
  year_options = [str(i) for i in range(1999, 2030)]
94
105
  month_options = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
95
106
  day_options = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"]
96
107
  hour_options = [str(i) for i in range(0, 24)]
97
- minute_options = [str(i) for i in range(0, 60)]
98
- second_options = [str(i) for i in range(0, 60)]
108
+ minute_options = [f"{i:02}" for i in range(0, 60)]
109
+ second_options = [f"{i:02}" for i in range(0, 60)]
99
110
 
100
111
  update_date = lambda om_text_var=om_text_var, year=year, month=month, day=day: om_text_var.set(f"{year.get()}-{month.get()}-{day.get()} {hour.get()}:{minute.get()}:{second.get()}")
101
112
 
@@ -120,10 +131,17 @@ class ParameterView(CTkScrollableFrame):
120
131
  year = sv()
121
132
  month = sv()
122
133
  day = sv()
123
- vv = om_text_var.get().split("-")
124
- year.set(vv[0])
125
- month.set(vv[1])
126
- day.set(vv[2])
134
+ year.set("2021")
135
+ month.set("01")
136
+ day.set("01")
137
+
138
+ try:
139
+ vv = om_text_var.get().split("-")
140
+ year.set(vv[0])
141
+ month.set(vv[1])
142
+ day.set(vv[2])
143
+ except Exception as e:
144
+ pass
127
145
  year_options = [str(i) for i in range(1999, 2030)]
128
146
  month_options = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
129
147
  day_options = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"]
@@ -370,6 +370,26 @@ class OptionManager():
370
370
 
371
371
  def copy_list(self, source_mode):
372
372
  self._data[self._mode_sv.get()] = self._data[source_mode]
373
+
374
+ def combine_steps(self):
375
+ mode = self._mode_sv.get()
376
+
377
+ obj = {"parameter_objects": [],
378
+ "override_parameter": [],
379
+ "objective_functions": [],
380
+ "name": sv(),
381
+ "open": True}
382
+ obj["name"].set("Combined Group")
383
+
384
+ for step in self._data[mode]["steps"]:
385
+ for param in step["parameter_objects"]:
386
+ obj["parameter_objects"].append(param)
387
+ for objective_function in step["objective_functions"]:
388
+ obj["objective_functions"].append(objective_function)
389
+ for override in step["override_parameter"]:
390
+ obj["override_parameter"].append(override)
391
+
392
+ self._data[mode]["steps"] = [obj]
373
393
 
374
394
  def get_data(self):
375
395
  return self._data[self._mode_sv.get()]
@@ -75,6 +75,10 @@ def create_tab(self, tab):
75
75
  self.option_manager.copy_list("Optimization")
76
76
  self.refresh_step_view(0)
77
77
 
78
+ def combine_steps():
79
+ self.option_manager.combine_steps()
80
+ self.refresh_step_view(0)
81
+
78
82
  def open_project_folder():
79
83
  # Open the file in the default program
80
84
  folder = self.option_manager.get_project_folder()
@@ -101,15 +105,18 @@ def create_tab(self, tab):
101
105
  self.optimization_copy = customtkinter.CTkButton(self.project_editor, text="From Optimization", command=copy_optim)
102
106
  self.optimization_copy.grid(row=4, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
103
107
 
104
- customtkinter.CTkLabel(self.project_editor, text="Project Management:").grid(row=5, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
108
+ self.combine_steps = customtkinter.CTkButton(self.project_editor, text="Combine Groups", command=combine_steps)
109
+ self.combine_steps.grid(row=5, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
110
+
111
+ customtkinter.CTkLabel(self.project_editor, text="Project Management:").grid(row=6, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
105
112
 
106
113
  self.open_folder = customtkinter.CTkButton(self.project_editor, text="Open Project Folder", command=open_project_folder)
107
- self.open_folder.grid(row=6, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
114
+ self.open_folder.grid(row=7, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
108
115
 
109
- customtkinter.CTkLabel(self.project_editor, text="Project Name:").grid(row=7, column=0, padx=(20, 20), pady=(10, 5), sticky="ew")
116
+ customtkinter.CTkLabel(self.project_editor, text="Project Name:").grid(row=8, column=0, padx=(20, 20), pady=(10, 5), sticky="ew")
110
117
  self.project_name_label = customtkinter.CTkLabel(self.project_editor, text=self.option_manager.get_project_data()["name"])
111
- self.project_name_label.grid(row=8, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
118
+ self.project_name_label.grid(row=9, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
112
119
 
113
- customtkinter.CTkLabel(self.project_editor, text="Project Path:").grid(row=9, column=0, padx=(20, 20), pady=(10, 5), sticky="ew")
120
+ customtkinter.CTkLabel(self.project_editor, text="Project Path:").grid(row=10, column=0, padx=(20, 20), pady=(10, 5), sticky="ew")
114
121
  self.project_path_label = customtkinter.CTkLabel(self.project_editor, text=self.option_manager.get_project_data()["path"])
115
- self.project_path_label.grid(row=10, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
122
+ self.project_path_label.grid(row=11, column=0, padx=(20, 20), pady=(5, 10), sticky="ew")
@@ -153,7 +153,7 @@ class BoundsList(CTkFrame):
153
153
  self.validate_number(bounds_max.get(), cc, bounds_max)
154
154
  tt2 = ctt(bounds_max, delay=0.1, alpha=0.95, message="...")
155
155
 
156
- if (bound_type == "list"):
156
+ if (bound_type == "list" and mode == "Optimization"):
157
157
  def button_click_event(bound_index):
158
158
  BEW(title="Edit List Bound", step_index=self.step_index, bound_index=bound_index, option_manager=self.option_manager)
159
159
 
@@ -54,7 +54,7 @@ class FunctionsList(CTkFrame):
54
54
 
55
55
  CTkLabel(self.containerFrame, text="Name:").grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="nsew")
56
56
  CTkLabel(self.containerFrame, text="Objective:").grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="nsew")
57
- if mode != "Sensitivity Analysis":
57
+ if mode == "Optimization":
58
58
  CTkLabel(self.containerFrame, text="Weight:").grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="nsew")
59
59
 
60
60
  row += 1
@@ -82,7 +82,7 @@ class FunctionsList(CTkFrame):
82
82
 
83
83
  CTkEntry(self.containerFrame, textvariable=func["name"]).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
84
84
  CTkOptionMenu(self.containerFrame, values=columns, variable=func["objective_function"], command=self.refresh).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
85
- if mode != "Sensitivity Analysis":
85
+ if mode == "Optimization":
86
86
  CTkEntry(self.containerFrame, textvariable=func["weight"]).grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="ew")
87
87
 
88
88
  row += 1
@@ -242,6 +242,8 @@ def run_sampling(data, mode, folder, results_queue):
242
242
  process_list(data, parameter_map, args, options, oh_strategy, config, metainfo, "service_parameters")
243
243
 
244
244
  output_steps = process_steps(data)
245
+ if len(output_steps) > 1:
246
+ output_steps = [output_steps[0]]
245
247
 
246
248
  trace_file = os.path.join(folder, 'results', mode + '_trace.csv')
247
249
  file_output_mode = data["sampling_output_mode"]
@@ -385,6 +387,8 @@ def run_sensitivity_analysis(data, folder, results_queue):
385
387
  trace_path = os.path.join(folder, 'results', 'trace.csv')
386
388
 
387
389
  output_steps = process_steps(data)
390
+ if len(output_steps) > 1:
391
+ output_steps = [output_steps[0]]
388
392
 
389
393
  # Get list of parameters from steps
390
394
  parameters = []