mg-pso-gui 0.2.94__tar.gz → 0.2.96__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.94 → mg_pso_gui-0.2.96}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/HomePage.py +16 -1
  4. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/FunctionsList.py +24 -21
  5. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/PSORunner.py +24 -2
  6. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/setup.py +1 -1
  7. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  8. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  9. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  10. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/requires.txt +0 -0
  11. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mg_pso_gui.egg-info/top_level.txt +0 -0
  12. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/__init__.py +0 -0
  13. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/General/NoticeWindow.py +0 -0
  14. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/General/ParameterView.py +0 -0
  15. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/General/__init__.py +0 -0
  16. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/OptionManager.py +0 -0
  17. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/OptionManager_backup.py +0 -0
  18. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  19. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  20. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/RunTab/OptimalParameterView.py +0 -0
  21. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/RunTab/RunTab.py +0 -0
  22. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/RunTab/__init__.py +0 -0
  23. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  24. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/BoundsList.py +0 -0
  25. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  26. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  27. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  28. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  29. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
  30. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
  31. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/SamplingListView.py +0 -0
  32. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/SamplingNameListWindow.py +0 -0
  33. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  34. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/StepView.py +0 -0
  35. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  36. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  37. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  38. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  39. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  40. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/__init__.py +0 -0
  41. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/defaults/__init__.py +0 -0
  42. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/defaults/optimization.json +0 -0
  43. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/defaults/sampling.json +0 -0
  44. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/defaults/sensitivity.json +0 -0
  45. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/collapse.png +0 -0
  46. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/down.png +0 -0
  47. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/expand.png +0 -0
  48. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/play.png +0 -0
  49. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/plus.png +0 -0
  50. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/refresh.png +0 -0
  51. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/refresh_hd.png +0 -0
  52. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/stop.png +0 -0
  53. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/test.png +0 -0
  54. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/trash.png +0 -0
  55. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/images/up.png +0 -0
  56. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/gui/messages/welcome.txt +0 -0
  57. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/mgpsogui.py +0 -0
  58. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/start.yaml +0 -0
  59. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  60. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  61. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/GraphGenerator.py +0 -0
  62. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/__init__.py +0 -0
  63. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/debug.py +0 -0
  64. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/helpers.py +0 -0
  65. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/__init__.py +0 -0
  66. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  67. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  68. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/pso/pso.py +0 -0
  69. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  70. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  71. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  72. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  73. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  74. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  75. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  76. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  77. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  78. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  79. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  80. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  81. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  82. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/recosu/utils/utils.py +0 -0
  83. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/mgpsogui/util/sampler_test_driver.py +0 -0
  84. {mg_pso_gui-0.2.94 → mg_pso_gui-0.2.96}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.2.94
3
+ Version: 0.2.96
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.94
3
+ Version: 0.2.96
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -153,7 +153,10 @@ class App(customtkinter.CTk):
153
153
  command=self.change_scaling_event)
154
154
  self.scaling_optionemenu.grid(row=0, column=8, padx=(5, 20), pady=header_padding_y)
155
155
  self.scaling_optionemenu.set("100%")
156
-
156
+
157
+ self.help_button = customtkinter.CTkButton(self.sidebar_frame, text="Help", width=20, command=self.open_help)
158
+ self.help_button.grid(row=0, column=9, padx=header_padding_x, pady=header_padding_y)
159
+
157
160
  expand_image = customtkinter.CTkImage(Image.open(os.path.join("./images", "expand.png")), size=(20, 20))
158
161
  #self.new_window = customtkinter.CTkButton(self.sidebar_frame, text=None, width=30, image=expand_image, command=self.open_new_window)
159
162
  #ctt(self.new_window, delay=0.1, alpha=0.95, message="Open New Window")
@@ -211,7 +214,10 @@ class App(customtkinter.CTk):
211
214
  self.after(1000, self.running_loop)
212
215
 
213
216
  # Read the file ./messages/welcome.txt and load it as a string and put it into the message
217
+
218
+ self.open_help()
214
219
 
220
+ def open_help(self):
215
221
  with open(os.path.join("./messages", "welcome.txt"), "r") as f:
216
222
  message = f.read()
217
223
  NW(title="Welcome!", message=message)
@@ -484,6 +490,15 @@ class App(customtkinter.CTk):
484
490
  if not os.path.exists(folder):
485
491
  os.makedirs(folder)
486
492
 
493
+ # Check if crash.txt exists in the folder
494
+ if (os.path.exists(os.path.join(folder, 'crash.txt'))):
495
+ with open(os.path.join(folder, 'crash.txt'), "r") as f:
496
+ message = f.read()
497
+ NW(title="Error Occurred!", message=message)
498
+ # Rename crash.txt to crash_read.txt
499
+ os.rename(os.path.join(folder, 'crash.txt'), os.path.join(folder, 'crash_read.txt'))
500
+ self.stop()
501
+
487
502
  while True:
488
503
  try:
489
504
  stdout_line = stdout_queue.get_nowait()
@@ -43,6 +43,8 @@ class FunctionsList(CTkFrame):
43
43
  self.containerFrame.grid(row=0, column=0, padx=(5, 5), pady=(5, 5), sticky="nsew")
44
44
  self.containerFrame.grid_columnconfigure((0, 1), weight=1)
45
45
 
46
+ mode = self.option_manager.get_mode()
47
+
46
48
  row = 1
47
49
 
48
50
  funcs = self.option_manager.get_steps()[self.step_index]["objective_functions"]
@@ -56,23 +58,23 @@ class FunctionsList(CTkFrame):
56
58
 
57
59
  row += 1
58
60
 
59
- columns = ["absdiff",
60
- "absdifflog",
61
- "ave",
62
- "bias",
63
- "fhf",
64
- "ioa",
65
- "ioa2",
61
+ columns = ["absdiff (not supported)",
62
+ "absdifflog (not supported)",
63
+ "ave (not supported)",
64
+ "bias (not supported)",
65
+ "fhf (not supported)",
66
+ "ioa (not supported)",
67
+ "ioa2 (not supported)",
66
68
  "kge",
67
- "kge09",
68
- "mns",
69
- "mse",
69
+ "kge09 (not supported)",
70
+ "mns (not supported)",
71
+ "mse (not supported)",
70
72
  "ns",
71
- "ns2log",
73
+ "ns2log (not supported)",
72
74
  "nslog1p",
73
- "nslog2",
75
+ "nslog2 (not supported)",
74
76
  "pbias",
75
- "pmcc",
77
+ "pmcc (not supported)",
76
78
  "rmse",
77
79
  "trmse",
78
80
  "custom"]
@@ -105,14 +107,15 @@ class FunctionsList(CTkFrame):
105
107
 
106
108
  row += 1
107
109
 
108
- CTkLabel(self.containerFrame, text="Observed and Simulated Data:").grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
109
-
110
- row += 1
111
-
112
- CTkEntry(self.containerFrame, textvariable=func["data_observed"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
113
- row += 1
114
- CTkEntry(self.containerFrame, textvariable=func["data_simulated"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
115
- row += 1
110
+ if mode != "Sensitive Analysis":
111
+ CTkLabel(self.containerFrame, text="Observed and Simulated Data:").grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
112
+
113
+ row += 1
114
+
115
+ CTkEntry(self.containerFrame, textvariable=func["data_observed"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
116
+ row += 1
117
+ CTkEntry(self.containerFrame, textvariable=func["data_simulated"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
118
+ row += 1
116
119
 
117
120
  if self.edit_mode:
118
121
  remove_func = lambda index=index: (self.clear(), self.option_manager.remove_function(self.step_index, index), self.render())
@@ -14,6 +14,19 @@ import shutil
14
14
  import json
15
15
  import numpy as np
16
16
 
17
+ ZERO_BEST = [
18
+ 'rmse',
19
+ 'trmse',
20
+ 'pbias'
21
+ ]
22
+
23
+ POSITIVE_BEST = [
24
+ 'kge',
25
+ 'nslog',
26
+ 'nslog1p',
27
+ 'ns'
28
+ ]
29
+
17
30
  def enqueue_output(out, queue):
18
31
  for line in iter(out.readline, b''):
19
32
  queue.put(line)
@@ -378,6 +391,15 @@ def run_sensitivity_analysis(data, folder, results_queue):
378
391
  for param in output_steps[0]['param']:
379
392
  parameters.append(param['name'])
380
393
 
394
+ positive_best = []
395
+ zero_best = []
396
+
397
+ for obj in output_steps[0]['objfunc']:
398
+ if obj['of'] in POSITIVE_BEST:
399
+ positive_best.append(obj['of'])
400
+ elif obj['of'] in ZERO_BEST:
401
+ zero_best.append(obj['of'])
402
+
381
403
  request_json = {
382
404
  "metainfo": {
383
405
  "service_url": None,
@@ -392,11 +414,11 @@ def run_sensitivity_analysis(data, folder, results_queue):
392
414
  },
393
415
  {
394
416
  "name": "positiveBestMetrics",
395
- "value": ["ns","kge","mns","kge09","nslog2"]
417
+ "value": positive_best
396
418
  },
397
419
  {
398
420
  "name": "zeroBestMetrics",
399
- "value": ["pbias","rmse"]
421
+ "value": zero_best
400
422
  }
401
423
  ]
402
424
  }
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '0.2.94'
5
+ VERSION = '0.2.96'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes