mg-pso-gui 0.2.95__tar.gz → 0.2.97__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.95 → mg_pso_gui-0.2.97}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/HomePage.py +9 -0
  4. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/FunctionsList.py +28 -23
  5. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/PSORunner.py +24 -2
  6. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/setup.py +1 -1
  7. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  8. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  9. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  10. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/requires.txt +0 -0
  11. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mg_pso_gui.egg-info/top_level.txt +0 -0
  12. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/__init__.py +0 -0
  13. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/General/NoticeWindow.py +0 -0
  14. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/General/ParameterView.py +0 -0
  15. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/General/__init__.py +0 -0
  16. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/OptionManager.py +0 -0
  17. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/OptionManager_backup.py +0 -0
  18. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  19. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  20. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/RunTab/OptimalParameterView.py +0 -0
  21. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/RunTab/RunTab.py +0 -0
  22. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/RunTab/__init__.py +0 -0
  23. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  24. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/BoundsList.py +0 -0
  25. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  26. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  27. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  28. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  29. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
  30. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
  31. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/SamplingListView.py +0 -0
  32. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/SamplingNameListWindow.py +0 -0
  33. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  34. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/StepView.py +0 -0
  35. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  36. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  37. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  38. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  39. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  40. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/__init__.py +0 -0
  41. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/defaults/__init__.py +0 -0
  42. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/defaults/optimization.json +0 -0
  43. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/defaults/sampling.json +0 -0
  44. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/defaults/sensitivity.json +0 -0
  45. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/collapse.png +0 -0
  46. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/down.png +0 -0
  47. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/expand.png +0 -0
  48. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/play.png +0 -0
  49. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/plus.png +0 -0
  50. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/refresh.png +0 -0
  51. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/refresh_hd.png +0 -0
  52. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/stop.png +0 -0
  53. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/test.png +0 -0
  54. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/trash.png +0 -0
  55. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/images/up.png +0 -0
  56. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/gui/messages/welcome.txt +0 -0
  57. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/mgpsogui.py +0 -0
  58. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/start.yaml +0 -0
  59. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  60. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  61. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/GraphGenerator.py +0 -0
  62. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/__init__.py +0 -0
  63. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/debug.py +0 -0
  64. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/helpers.py +0 -0
  65. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/__init__.py +0 -0
  66. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  67. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  68. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/pso/pso.py +0 -0
  69. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  70. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  71. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  72. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  73. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  74. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  75. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  76. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  77. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  78. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  79. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  80. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  81. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  82. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/recosu/utils/utils.py +0 -0
  83. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/mgpsogui/util/sampler_test_driver.py +0 -0
  84. {mg_pso_gui-0.2.95 → mg_pso_gui-0.2.97}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.2.95
3
+ Version: 0.2.97
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.95
3
+ Version: 0.2.97
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -490,6 +490,15 @@ class App(customtkinter.CTk):
490
490
  if not os.path.exists(folder):
491
491
  os.makedirs(folder)
492
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
+
493
502
  while True:
494
503
  try:
495
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"]
@@ -52,34 +54,36 @@ class FunctionsList(CTkFrame):
52
54
 
53
55
  CTkLabel(self.containerFrame, text="Name:").grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="nsew")
54
56
  CTkLabel(self.containerFrame, text="Objective:").grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="nsew")
55
- CTkLabel(self.containerFrame, text="Weight:").grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="nsew")
57
+ if mode != "Sensitivity Analysis":
58
+ CTkLabel(self.containerFrame, text="Weight:").grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="nsew")
56
59
 
57
60
  row += 1
58
61
 
59
- columns = ["absdiff",
60
- "absdifflog",
61
- "ave",
62
- "bias",
63
- "fhf",
64
- "ioa",
65
- "ioa2",
62
+ columns = ["absdiff (not supported)",
63
+ "absdifflog (not supported)",
64
+ "ave (not supported)",
65
+ "bias (not supported)",
66
+ "fhf (not supported)",
67
+ "ioa (not supported)",
68
+ "ioa2 (not supported)",
66
69
  "kge",
67
- "kge09",
68
- "mns",
69
- "mse",
70
+ "kge09 (not supported)",
71
+ "mns (not supported)",
72
+ "mse (not supported)",
70
73
  "ns",
71
- "ns2log",
74
+ "ns2log (not supported)",
72
75
  "nslog1p",
73
- "nslog2",
76
+ "nslog2 (not supported)",
74
77
  "pbias",
75
- "pmcc",
78
+ "pmcc (not supported)",
76
79
  "rmse",
77
80
  "trmse",
78
81
  "custom"]
79
82
 
80
83
  CTkEntry(self.containerFrame, textvariable=func["name"]).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
81
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")
82
- CTkEntry(self.containerFrame, textvariable=func["weight"]).grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="ew")
85
+ if mode != "Sensitivity Analysis":
86
+ CTkEntry(self.containerFrame, textvariable=func["weight"]).grid(row=row, column=2, padx=(5, 5), pady=(5, 5), sticky="ew")
83
87
 
84
88
  row += 1
85
89
 
@@ -105,14 +109,15 @@ class FunctionsList(CTkFrame):
105
109
 
106
110
  row += 1
107
111
 
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
112
+ if mode != "Sensitivity Analysis":
113
+ CTkLabel(self.containerFrame, text="Observed and Simulated Data:").grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
114
+
115
+ row += 1
116
+
117
+ CTkEntry(self.containerFrame, textvariable=func["data_observed"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
118
+ row += 1
119
+ CTkEntry(self.containerFrame, textvariable=func["data_simulated"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="nsew")
120
+ row += 1
116
121
 
117
122
  if self.edit_mode:
118
123
  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.95'
5
+ VERSION = '0.2.97'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes