mg-pso-gui 0.1.233__tar.gz → 0.1.236__tar.gz

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.
Files changed (73) hide show
  1. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/HomePage.py +13 -2
  4. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/OptionManager.py +2 -2
  5. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/StepView.py +31 -9
  6. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/PSORunner.py +5 -52
  7. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/setup.py +1 -1
  8. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  9. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  10. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  11. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/requires.txt +0 -0
  12. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mg_pso_gui.egg-info/top_level.txt +0 -0
  13. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/__init__.py +0 -0
  14. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  15. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  16. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/RunTab/RunTab.py +0 -0
  17. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/RunTab/__init__.py +0 -0
  18. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  19. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/BoundsList.py +0 -0
  20. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/CalibrationParametersView.py +0 -0
  21. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  22. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  23. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/FunctionsList.py +0 -0
  24. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  25. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  26. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/OptimalParameterView.py +0 -0
  27. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  28. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/StaticParameterView.py +0 -0
  29. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  30. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  31. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  32. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  33. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  34. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/__init__.py +0 -0
  35. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/IGOW 4 Logo.png +0 -0
  36. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/collapse.png +0 -0
  37. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/down.png +0 -0
  38. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/expand.png +0 -0
  39. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/play.png +0 -0
  40. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/refresh.png +0 -0
  41. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/refresh_hd.png +0 -0
  42. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/stop.png +0 -0
  43. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/test.png +0 -0
  44. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/trash.png +0 -0
  45. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/gui/images/up.png +0 -0
  46. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/mgpsogui.py +0 -0
  47. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/start.yaml +0 -0
  48. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  49. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  50. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/GraphGenerator.py +0 -0
  51. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/__init__.py +0 -0
  52. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/debug.py +0 -0
  53. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/helpers.py +0 -0
  54. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/__init__.py +0 -0
  55. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  56. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  57. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/pso/pso.py +0 -0
  58. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  59. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  60. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  61. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  62. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  63. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  64. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  65. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  66. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  67. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  68. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  69. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  70. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  71. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/recosu/utils/utils.py +0 -0
  72. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/mgpsogui/util/sampler_test_driver.py +0 -0
  73. {mg_pso_gui-0.1.233 → mg_pso_gui-0.1.236}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.1.233
3
+ Version: 0.1.236
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.1.233
3
+ Version: 0.1.236
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -74,6 +74,15 @@ class App(customtkinter.CTk):
74
74
  self.open_file = "None"
75
75
  self.csv_data = None
76
76
 
77
+ self.sensitivity_file = tk.StringVar()
78
+ self.sensitivity_file.set("No files found...")
79
+
80
+ self.sampling_method = tk.StringVar()
81
+ self.sampling_method.set("Halton")
82
+
83
+ self.sampling_output = tk.StringVar()
84
+ self.sampling_output.set("Replace")
85
+
77
86
  self.selected_csv2 = tk.StringVar()
78
87
  self.selected_csv2.set("No files found...")
79
88
  self.open_file2 = "None"
@@ -240,7 +249,7 @@ class App(customtkinter.CTk):
240
249
  mode = self.option_manager.get_arguments()['mode'].get()
241
250
  self.service_url.configure(textvariable=self.option_manager.get_arguments()['urls'][mode])
242
251
 
243
- if mode == "Optimization: MG-PSO":
252
+ if mode == "Optimization":
244
253
  self.test_button.configure(state="normal")
245
254
  self.test_button.configure(fg_color=get_color("CTkButton"))
246
255
  self.download_button.configure(state="normal")
@@ -378,6 +387,8 @@ class App(customtkinter.CTk):
378
387
  param['default_value'] = param['optimal_value']
379
388
  self.testing = False
380
389
 
390
+ metrics["sensitivity_analysis_path"] = self.sensitivity_file.get()
391
+
381
392
  self.progress_data = None
382
393
  self.calibration_data = None
383
394
 
@@ -569,7 +580,7 @@ class App(customtkinter.CTk):
569
580
 
570
581
  # Parse data into interface
571
582
  mode = self.option_manager.get_arguments()['mode'].get()
572
- if mode == "Optimization: MG-PSO":
583
+ if mode == "Optimization":
573
584
  if (os.path.exists(os.path.join(folder, 'error.txt'))):
574
585
  data = hp.parse_pso_error(os.path.join(folder, 'error.txt'), len(self.option_manager.get_steps()))
575
586
  print(data)
@@ -22,7 +22,7 @@ class OptionManager():
22
22
  self.steps = []
23
23
  self.service_parameters = {}
24
24
 
25
- self.service_modes = ["Sampling: Halton", "Sampling: Random", "Sensitivity Analysis", "Optimization: MG-PSO"]
25
+ self.service_modes = ["Sampling", "Sensitivity Analysis", "Optimization"]
26
26
  for mode in self.service_modes:
27
27
  self.arguments["urls"][mode] = sv()
28
28
 
@@ -32,7 +32,7 @@ class OptionManager():
32
32
  self.arguments['url'].set("")
33
33
  for mode in self.service_modes:
34
34
  self.arguments["urls"][mode].set("")
35
- self.arguments['mode'].set("Optimization: MG-PSO")
35
+ self.arguments['mode'].set("Optimization")
36
36
  self.arguments['files'] = {}
37
37
  self.arguments['calibration_parameters'].clear()
38
38
  self.arguments['figure_parameters'].clear()
@@ -24,6 +24,7 @@ class StepView(CTkScrollableFrame):
24
24
  self.option_manager = option_manager
25
25
  self.analysisFrame = None
26
26
  self.containerFrame = None
27
+ self.home_page = home_page
27
28
 
28
29
  self.render()
29
30
 
@@ -90,18 +91,39 @@ class StepView(CTkScrollableFrame):
90
91
 
91
92
  if len(files) == 0:
92
93
  files = [" No CSV files found! Run sampling first! "]
94
+ elif self.home_page.sensitivity_file.get() not in files:
95
+ self.home_page.sensitivity_file.set(files[0])
93
96
 
94
97
  header_padding_x = (5, 5)
95
98
  header_padding_y = (10, 10)
96
99
 
97
- self.file_selector_frame = CTkFrame(self.containerFrame, corner_radius=0)
100
+ self.file_selector_frame = CTkFrame(self.containerFrame)
98
101
  self.file_selector_frame.grid(row=0, column=0, sticky="nsew", columnspan=2)
99
102
  self.logo_label = CTkLabel(self.file_selector_frame, text="Select File:")
100
- self.logo_label.grid(row=0, column=0, padx=(20, 10), pady=header_padding_y)
103
+ self.logo_label.grid(row=0, column=0, padx=(10, 10), pady=header_padding_y)
101
104
 
102
- self.file_selector = CTkOptionMenu(self.file_selector_frame, values=files, width=50)
103
- self.file_selector.grid(row=0, column=1, padx=(5, 80), pady=header_padding_y)
104
- self.file_selector.set(files[0])
105
+ self.file_selector = CTkOptionMenu(self.file_selector_frame, values=files, width=50, variable=self.home_page.sensitivity_file)
106
+ self.file_selector.grid(row=0, column=1, padx=(10, 10), pady=header_padding_y)
107
+
108
+ row += 1
109
+
110
+ if (self.mode == "Sampling"):
111
+ header_padding_x = (5, 5)
112
+ header_padding_y = (10, 10)
113
+
114
+ self.file_selector_frame = CTkFrame(self.containerFrame)
115
+ self.file_selector_frame.grid(row=0, column=0, sticky="nsew", columnspan=2)
116
+ self.logo_label = CTkLabel(self.file_selector_frame, text="Sampling Method:")
117
+ self.logo_label.grid(row=0, column=0, padx=(10, 10), pady=header_padding_y)
118
+
119
+ self.sampling_method = CTkOptionMenu(self.file_selector_frame, values=["Halton", "Random"], width=50, variable=self.home_page.sampling_method)
120
+ self.sampling_method.grid(row=0, column=1, padx=(10, 10), pady=header_padding_y)
121
+
122
+ self.logo_label2 = CTkLabel(self.file_selector_frame, text="Output:")
123
+ self.logo_label2.grid(row=0, column=0, padx=(20, 10), pady=header_padding_y)
124
+
125
+ self.output_method = CTkOptionMenu(self.file_selector_frame, values=["Replace", "Append"], width=50, variable=self.home_page.sampling_output)
126
+ self.output_method.grid(row=0, column=1, padx=(10, 10), pady=header_padding_y)
105
127
 
106
128
  row += 1
107
129
 
@@ -120,7 +142,7 @@ class StepView(CTkScrollableFrame):
120
142
  down_func = lambda index=index: (self.clear(), self.option_manager.move_step_down(index), self.render())
121
143
  remove_func = lambda index=index: (self.clear(), self.option_manager.remove_step(index), self.render())
122
144
 
123
- if (self.mode == "Optimization: MG-PSO"):
145
+ if (self.mode == "Optimization"):
124
146
  button_container = CTkFrame(self.containerFrame, width=200)
125
147
  button_container.grid(row=row, column=1, sticky="nse", padx=(10, 10), pady=(10, 10))
126
148
  button_container.grid_rowconfigure(0, weight=1)
@@ -135,7 +157,7 @@ class StepView(CTkScrollableFrame):
135
157
 
136
158
  row += 1
137
159
 
138
- if step['open'] or (self.mode == "Sampling: Halton" or self.mode == "Sampling: Random" or self.mode == "Sensitivity Analysis"):
160
+ if step['open'] or (self.mode == "Sampling"or self.mode == "Sensitivity Analysis"):
139
161
  bounds = BoundsList.BoundsList(
140
162
  self.containerFrame, option_manager=self.option_manager, step_index=index)
141
163
  bounds.grid(row=row, column=0, padx=(10, 10),
@@ -153,11 +175,11 @@ class StepView(CTkScrollableFrame):
153
175
  row += 1
154
176
  index += 1
155
177
 
156
- if (self.mode != "Optimization: MG-PSO"):
178
+ if (self.mode != "Optimization"):
157
179
  break
158
180
 
159
181
  # Create an "Add step button that is centered
160
- if (self.mode == "Optimization: MG-PSO" or len(self.steps) == 0):
182
+ if (self.mode == "Optimization" or len(self.steps) == 0):
161
183
  CTkButton(self.containerFrame, text="Add Group", command=self.create_new_step).grid(
162
184
  row=row, columnspan=2, column=0, padx=(10, 10), pady=(10, 10), sticky="ew")
163
185
 
@@ -76,7 +76,7 @@ def run_process(stdout_queue, stderr_queue, results_queue, data, folder):
76
76
 
77
77
  config = {}
78
78
 
79
- if my_mode == "Sampling: Halton" or my_mode == "Sampling: Random":
79
+ if my_mode == "Sampling":
80
80
  config = {
81
81
  'service_timeout': int(calibration_map['service_timeout']),
82
82
  'http_retry': int(calibration_map['http_retry']),
@@ -86,7 +86,7 @@ def run_process(stdout_queue, stderr_queue, results_queue, data, folder):
86
86
  'read_timeout': int(calibration_map['read_timeout']),
87
87
  'step_trace': os.path.join(folder, 'pso_step_trace.json')
88
88
  }
89
- elif my_mode == "Optimization: MG-PSO":
89
+ elif my_mode == "Optimization":
90
90
  config = {
91
91
  'service_timeout': int(calibration_map['service_timeout']),
92
92
  'http_retry': int(calibration_map['http_retry']),
@@ -139,11 +139,11 @@ def run_process(stdout_queue, stderr_queue, results_queue, data, folder):
139
139
  print(trace, flush=True)
140
140
  print("\n", flush=True)
141
141
 
142
- elif my_mode == "Sensitivity: Halton":
142
+ elif my_mode == "Sensitivity Analysis":
143
143
 
144
- print("Running Halton Sensitivity Analysis", flush=True)
144
+ print("Running Sensitivity Analysis", flush=True)
145
145
 
146
- shutil.copyfile(os.path.join(folder, 'results', 'halton_trace.csv'), os.path.join(folder, 'results', 'trace.csv'))
146
+ shutil.copyfile(data["sensitivity_analysis_path"], os.path.join(folder, 'results', 'trace.csv'))
147
147
  trace_path = os.path.join(folder, 'results', 'trace.csv')
148
148
 
149
149
  # Get list of parameters from steps
@@ -185,53 +185,6 @@ def run_process(stdout_queue, stderr_queue, results_queue, data, folder):
185
185
 
186
186
  sensitivity_analysis(args['url'], request_path, trace_path, output_directory)
187
187
 
188
- print("Finished Sensitivity Analysis", flush=True)
189
- elif my_mode == "Sensitivity: Random":
190
-
191
- print("Running Random Sensitivity Analysis", flush=True)
192
-
193
- shutil.copyfile(os.path.join(folder, 'results', 'random_trace.csv'), os.path.join(folder, 'results', 'trace.csv'))
194
- trace_path = os.path.join(folder, 'results', 'trace.csv')
195
-
196
- # Get list of parameters from steps
197
- parameters = []
198
- for param in steps[0]['param']:
199
- parameters.append(param['name'])
200
-
201
- request_json = {
202
- "metainfo": {
203
- "service_url": None,
204
- "description": "",
205
- "name": "",
206
- "mode": "async"
207
- },
208
- "parameter": [
209
- {
210
- "name": "parameters",
211
- "value": parameters
212
- },
213
- {
214
- "name": "positiveBestMetrics",
215
- "value": ["ns","kge","mns","kge09","nslog2"]
216
- },
217
- {
218
- "name": "zeroBestMetrics",
219
- "value": ["pbias","rmse"]
220
- }
221
- ]
222
- }
223
-
224
- with open(os.path.join(folder, 'results', 'request.json'), 'w') as json_file:
225
- json.dump(request_json, json_file, indent=4)
226
-
227
- request_path = os.path.join(folder, 'results', 'request.json')
228
-
229
- output_directory = os.path.join(folder, 'results')
230
-
231
- print("Starting ", args['url'], request_path, trace_path, output_directory, flush=True)
232
-
233
- sensitivity_analysis(args['url'], request_path, trace_path, output_directory)
234
-
235
188
  print("Finished Sensitivity Analysis", flush=True)
236
189
  else:
237
190
  print("Running MG-PSO Optimization...\n", flush=True)
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '0.1.233'
5
+ VERSION = '0.1.236'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes