mg-pso-gui 0.2.34__tar.gz → 0.2.36__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 (80) hide show
  1. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/HomePage.py +1 -0
  4. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/PSORunner.py +60 -41
  5. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/setup.py +1 -1
  6. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  7. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  8. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  9. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/requires.txt +0 -0
  10. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mg_pso_gui.egg-info/top_level.txt +0 -0
  11. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/__init__.py +0 -0
  12. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/General/ParameterView.py +0 -0
  13. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/General/__init__.py +0 -0
  14. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/OptionManager.py +0 -0
  15. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/OptionManager_backup.py +0 -0
  16. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  17. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  18. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/RunTab/RunTab.py +0 -0
  19. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/RunTab/__init__.py +0 -0
  20. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  21. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/BoundsList.py +0 -0
  22. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  23. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  24. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/FunctionsList.py +0 -0
  25. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  26. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  27. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/OptimalParameterView.py +0 -0
  28. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
  29. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
  30. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  31. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/StepView.py +0 -0
  32. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  33. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  34. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  35. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  36. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  37. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/__init__.py +0 -0
  38. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/defaults/__init__.py +0 -0
  39. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/defaults/optimization.json +0 -0
  40. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/defaults/sampling.json +0 -0
  41. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/defaults/sensitivity.json +0 -0
  42. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/collapse.png +0 -0
  43. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/down.png +0 -0
  44. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/expand.png +0 -0
  45. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/play.png +0 -0
  46. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/plus.png +0 -0
  47. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/refresh.png +0 -0
  48. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/refresh_hd.png +0 -0
  49. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/stop.png +0 -0
  50. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/test.png +0 -0
  51. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/trash.png +0 -0
  52. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/gui/images/up.png +0 -0
  53. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/mgpsogui.py +0 -0
  54. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/start.yaml +0 -0
  55. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  56. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  57. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/GraphGenerator.py +0 -0
  58. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/__init__.py +0 -0
  59. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/debug.py +0 -0
  60. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/helpers.py +0 -0
  61. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/__init__.py +0 -0
  62. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  63. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  64. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/pso/pso.py +0 -0
  65. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  66. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  67. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  68. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  69. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  70. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  71. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  72. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  73. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  74. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  75. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  76. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  77. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  78. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/recosu/utils/utils.py +0 -0
  79. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/mgpsogui/util/sampler_test_driver.py +0 -0
  80. {mg_pso_gui-0.2.34 → mg_pso_gui-0.2.36}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.2.34
3
+ Version: 0.2.36
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.34
3
+ Version: 0.2.36
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -353,6 +353,7 @@ class App(customtkinter.CTk):
353
353
 
354
354
  data = self.option_manager.get_all_data()
355
355
  mode = self.option_manager.get_mode()
356
+ data = data["mode"]
356
357
 
357
358
  self.running_config = data
358
359
 
@@ -30,53 +30,72 @@ def run_process(stdout_queue, stderr_queue, results_queue, data, folder, mode):
30
30
  folder (_type_): _description_
31
31
  mode (_type_): _description_
32
32
  """
33
+ try:
34
+ # Setup folders
35
+ if not os.path.exists(folder):
36
+ os.makedirs(folder)
33
37
 
34
- # Setup folders
35
- if not os.path.exists(folder):
36
- os.makedirs(folder)
38
+ if not os.path.exists(os.path.join(folder, "results")):
39
+ os.makedirs(os.path.join(folder, "results"))
37
40
 
38
- if not os.path.exists(os.path.join(folder, "results")):
39
- os.makedirs(os.path.join(folder, "results"))
41
+ if (os.path.exists(os.path.join(folder, 'output.txt'))):
42
+ os.remove(os.path.join(folder, 'output.txt'))
43
+
44
+ if (os.path.exists(os.path.join(folder, 'error.txt'))):
45
+ os.remove(os.path.join(folder, 'error.txt'))
40
46
 
41
- if (os.path.exists(os.path.join(folder, 'output.txt'))):
42
- os.remove(os.path.join(folder, 'output.txt'))
47
+ # Redirect stdout and stderr to files
48
+ old_stdout = sys.stdout
49
+ old_stderr = sys.stderr
43
50
 
44
- if (os.path.exists(os.path.join(folder, 'error.txt'))):
45
- os.remove(os.path.join(folder, 'error.txt'))
51
+ read_stdout, write_stdout = os.pipe()
52
+ read_stderr, write_stderr = os.pipe()
53
+
54
+ sys.stdout = os.fdopen(write_stdout, 'w')
55
+ sys.stderr = os.fdopen(write_stderr, 'w')
56
+
57
+ stdout_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stdout, 'r'), stdout_queue))
58
+ stderr_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stderr, 'r'), stderr_queue))
59
+ stdout_thread.daemon = True
60
+ stderr_thread.daemon = True
61
+ stdout_thread.start()
62
+ stderr_thread.start()
63
+
64
+ if mode == "Sampling: Halton":
65
+ run_sampling(data, "halton", folder, results_queue)
66
+ elif mode == "Sampling: Random":
67
+ run_sampling(data, "random", folder, results_queue)
68
+ elif mode == "Sensitivity Analysis":
69
+ run_sensitivity_analysis(data, folder, results_queue)
70
+ elif mode == "Optimization":
71
+ run_optimization(data, folder, results_queue)
72
+ else:
73
+ print("Invalid mode")
46
74
 
47
- # Redirect stdout and stderr to files
48
- old_stdout = sys.stdout
49
- old_stderr = sys.stderr
50
-
51
- read_stdout, write_stdout = os.pipe()
52
- read_stderr, write_stderr = os.pipe()
53
-
54
- sys.stdout = os.fdopen(write_stdout, 'w')
55
- sys.stderr = os.fdopen(write_stderr, 'w')
56
-
57
- stdout_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stdout, 'r'), stdout_queue))
58
- stderr_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stderr, 'r'), stderr_queue))
59
- stdout_thread.daemon = True
60
- stderr_thread.daemon = True
61
- stdout_thread.start()
62
- stderr_thread.start()
75
+ stdout_thread.join()
76
+ stderr_thread.join()
77
+
78
+ sys.stdout = old_stdout
79
+ sys.stderr = old_stderr
80
+
81
+ except Exception as e:
82
+ print("An exception occurred: ", flush=True)
83
+ print(str(e))
84
+ # Print stack trace
85
+ import traceback
86
+ traceback.print_exc()
63
87
 
64
- if mode == "Sampling: Halton":
65
- run_sampling(data, "halton", folder, results_queue)
66
- elif mode == "Sampling: Random":
67
- run_sampling(data, "random", folder, results_queue)
68
- elif mode == "Sensitivity Analysis":
69
- run_sensitivity_analysis(data, folder, results_queue)
70
- elif mode == "Optimization":
71
- run_optimization(data, folder, results_queue)
72
- else:
73
- print("Invalid mode")
74
-
75
- stdout_thread.join()
76
- stderr_thread.join()
77
-
78
- sys.stdout = old_stdout
79
- sys.stderr = old_stderr
88
+ # Write all of this information to a crash file
89
+ with open(os.path.join(folder, 'crash.txt'), 'w') as f:
90
+ f.write(str(e))
91
+ f.write("\n")
92
+ traceback.print_exc(file=f)
93
+ finally:
94
+ stdout_thread.join()
95
+ stderr_thread.join()
96
+
97
+ sys.stdout = old_stdout
98
+ sys.stderr = old_stderr
80
99
 
81
100
  def process_list(data, parameter_map, args, options, oh_strategy, config, metainfo, list_name):
82
101
  """_summary_
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '0.2.34'
5
+ VERSION = '0.2.36'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes