mg-pso-gui 0.2.98__tar.gz → 0.2.100__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 (84) hide show
  1. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/General/ParameterView.py +33 -15
  4. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/OptionManager.py +20 -0
  5. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/RunTab/RunTab.py +13 -6
  6. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/BoundsList.py +1 -1
  7. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/FunctionsList.py +2 -2
  8. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/PSORunner.py +4 -0
  9. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/setup.py +1 -1
  10. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  11. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  12. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  13. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/requires.txt +0 -0
  14. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mg_pso_gui.egg-info/top_level.txt +0 -0
  15. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/__init__.py +0 -0
  16. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/General/NoticeWindow.py +0 -0
  17. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/General/__init__.py +0 -0
  18. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/HomePage.py +0 -0
  19. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/OptionManager_backup.py +0 -0
  20. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  21. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  22. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/RunTab/OptimalParameterView.py +0 -0
  23. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/RunTab/__init__.py +0 -0
  24. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  25. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  26. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  27. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  28. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  29. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
  30. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
  31. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/SamplingListView.py +0 -0
  32. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/SamplingNameListWindow.py +0 -0
  33. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  34. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/StepView.py +0 -0
  35. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  36. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  37. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  38. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  39. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  40. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/__init__.py +0 -0
  41. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/defaults/__init__.py +0 -0
  42. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/defaults/optimization.json +0 -0
  43. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/defaults/sampling.json +0 -0
  44. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/defaults/sensitivity.json +0 -0
  45. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/collapse.png +0 -0
  46. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/down.png +0 -0
  47. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/expand.png +0 -0
  48. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/play.png +0 -0
  49. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/plus.png +0 -0
  50. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/refresh.png +0 -0
  51. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/refresh_hd.png +0 -0
  52. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/stop.png +0 -0
  53. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/test.png +0 -0
  54. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/trash.png +0 -0
  55. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/images/up.png +0 -0
  56. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/gui/messages/welcome.txt +0 -0
  57. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/mgpsogui.py +0 -0
  58. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/start.yaml +0 -0
  59. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  60. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  61. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/GraphGenerator.py +0 -0
  62. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/__init__.py +0 -0
  63. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/debug.py +0 -0
  64. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/helpers.py +0 -0
  65. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/__init__.py +0 -0
  66. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  67. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  68. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/pso/pso.py +0 -0
  69. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  70. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  71. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  72. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  73. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  74. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  75. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  76. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  77. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  78. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  79. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  80. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  81. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  82. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/recosu/utils/utils.py +0 -0
  83. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/mgpsogui/util/sampler_test_driver.py +0 -0
  84. {mg_pso_gui-0.2.98 → mg_pso_gui-0.2.100}/setup.cfg +0 -0
@@ -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>
@@ -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>
@@ -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 = []
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '0.2.98'
5
+ VERSION = '0.2.100'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes