mg-pso-gui 0.2.97__tar.gz → 0.2.98__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.97 → mg_pso_gui-0.2.98}/PKG-INFO +1 -1
  2. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/PKG-INFO +1 -1
  3. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/General/ParameterView.py +43 -1
  4. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/HomePage.py +1 -1
  5. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/OptionManager.py +1 -1
  6. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/BoundsList.py +1 -1
  7. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/PSORunner.py +1 -223
  8. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/setup.py +1 -1
  9. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/SOURCES.txt +0 -0
  10. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
  11. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/entry_points.txt +0 -0
  12. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/requires.txt +0 -0
  13. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mg_pso_gui.egg-info/top_level.txt +0 -0
  14. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/__init__.py +0 -0
  15. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/General/NoticeWindow.py +0 -0
  16. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/General/__init__.py +0 -0
  17. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/OptionManager_backup.py +0 -0
  18. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
  19. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
  20. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/RunTab/OptimalParameterView.py +0 -0
  21. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/RunTab/RunTab.py +0 -0
  22. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/RunTab/__init__.py +0 -0
  23. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
  24. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
  25. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
  26. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/FunctionsList.py +0 -0
  27. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
  28. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
  29. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
  30. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
  31. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/SamplingListView.py +0 -0
  32. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/SamplingNameListWindow.py +0 -0
  33. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
  34. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/StepView.py +0 -0
  35. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/SetupTab/__init__.py +0 -0
  36. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
  37. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
  38. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
  39. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
  40. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/__init__.py +0 -0
  41. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/defaults/__init__.py +0 -0
  42. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/defaults/optimization.json +0 -0
  43. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/defaults/sampling.json +0 -0
  44. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/defaults/sensitivity.json +0 -0
  45. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/collapse.png +0 -0
  46. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/down.png +0 -0
  47. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/expand.png +0 -0
  48. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/play.png +0 -0
  49. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/plus.png +0 -0
  50. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/refresh.png +0 -0
  51. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/refresh_hd.png +0 -0
  52. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/stop.png +0 -0
  53. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/test.png +0 -0
  54. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/trash.png +0 -0
  55. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/images/up.png +0 -0
  56. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/gui/messages/welcome.txt +0 -0
  57. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/mgpsogui.py +0 -0
  58. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/start.yaml +0 -0
  59. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
  60. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
  61. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/GraphGenerator.py +0 -0
  62. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/__init__.py +0 -0
  63. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/debug.py +0 -0
  64. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/helpers.py +0 -0
  65. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/__init__.py +0 -0
  66. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/pso/__init__.py +0 -0
  67. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
  68. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/pso/pso.py +0 -0
  69. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
  70. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
  71. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
  72. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
  73. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
  74. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
  75. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
  76. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
  77. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
  78. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/utils/__init__.py +0 -0
  79. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
  80. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
  81. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
  82. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/recosu/utils/utils.py +0 -0
  83. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/mgpsogui/util/sampler_test_driver.py +0 -0
  84. {mg_pso_gui-0.2.97 → mg_pso_gui-0.2.98}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.2.97
3
+ Version: 0.2.98
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.97
3
+ Version: 0.2.98
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -57,7 +57,7 @@ class ParameterView(CTkScrollableFrame):
57
57
  CTkEntry(self.containerFrame, textvariable=self.key_values[index]["name"]).grid(row=row, column=0, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="ew")
58
58
 
59
59
  if self.edit_mode and not required:
60
- type_menu = CTkOptionMenu(self.containerFrame, variable=self.key_values[index]["type"], values=["integer", "float", "date", "boolean", "string"], width=20)
60
+ type_menu = CTkOptionMenu(self.containerFrame, variable=self.key_values[index]["type"], values=["integer", "float", "date", "datetime", "boolean", "string"], width=20)
61
61
  type_menu.grid(row=row, column=3, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
62
62
 
63
63
  dest_menu = CTkOptionMenu(self.containerFrame, variable=self.key_values[index]["destination"], values=["args", "kwargs", "conf", "options", "oh_strategy", "metainfo"], width=20)
@@ -73,6 +73,48 @@ class ParameterView(CTkScrollableFrame):
73
73
  if type == "boolean":
74
74
  bb = CTkOptionMenu(self.containerFrame, values=["True", "False", "NULL"], variable=self.key_values[index]["value"])
75
75
  bb.grid(row=row, column=3, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="ew")
76
+ elif type == "datetime":
77
+ om_text_var = self.key_values[index]["value"]
78
+ year = sv()
79
+ month = sv()
80
+ day = sv()
81
+ hour = sv()
82
+ minute = sv()
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])
93
+ year_options = [str(i) for i in range(1999, 2030)]
94
+ month_options = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
95
+ 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
+ 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)]
99
+
100
+ 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
+
102
+ datetime_module = CTkFrame(self.containerFrame)
103
+ datetime_module.grid(row=row, column=3, columnspan=3, padx=(5, 5), pady=(5, 5), sticky="ew")
104
+
105
+ year_menu = CTkOptionMenu(datetime_module, variable=year, values=year_options, width=50, command=update_date)
106
+ year_menu.grid(row=0, column=0, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
107
+ month_menu = CTkOptionMenu(datetime_module, variable=month, values=month_options, width=20, command=update_date)
108
+ month_menu.grid(row=0, column=1, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
109
+ day_menu = CTkOptionMenu(datetime_module, variable=day, values=day_options, width=20, command=update_date)
110
+ day_menu.grid(row=0, column=2, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
111
+ hour_menu = CTkOptionMenu(datetime_module, variable=hour, values=hour_options, width=20, command=update_date)
112
+ hour_menu.grid(row=1, column=0, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
113
+ minute_menu = CTkOptionMenu(datetime_module, variable=minute, values=minute_options, width=20, command=update_date)
114
+ minute_menu.grid(row=1, column=1, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
115
+ second_menu = CTkOptionMenu(datetime_module, variable=second, values=second_options, width=20, command=update_date)
116
+ second_menu.grid(row=1, column=2, columnspan=1, padx=(0, 0), pady=(5, 5), sticky="ew")
117
+
76
118
  elif type == "date":
77
119
  om_text_var = self.key_values[index]["value"]
78
120
  year = sv()
@@ -415,7 +415,7 @@ class App(customtkinter.CTk):
415
415
  #self.progress_message_middle.configure(text="Job starting...")
416
416
  self.footer_progress_label.configure(text="Starting...")
417
417
 
418
- self.textbox.insert("0.0", "Starting job...\n\n")
418
+ self.textbox.insert("0.0", "Starting job of " + mode + "...\n\n")
419
419
  self.textbox.insert("0.0", "Job Parameters:\n")
420
420
  self.textbox.insert("0.0", json.dumps(data, indent=4) + "\n\n")
421
421
  try:
@@ -16,7 +16,7 @@ class OptionManager():
16
16
  self.init_lists()
17
17
 
18
18
  def init_lists(self):
19
- self._project_data = {"name": "", "path": ""}
19
+ self._project_data = {"name": "cosu_default", "path": "/tmp"}
20
20
  self._data = {}
21
21
 
22
22
  self._mode_sv.set("Sampling: Halton")
@@ -105,7 +105,7 @@ class BoundsList(CTkFrame):
105
105
  tt2 = None
106
106
  tt3 = None
107
107
 
108
- tt = CTkOptionMenu(self.containerFrame, dynamic_resizing=False, values=['float', 'int', 'list', 'string', 'custom'], variable=bound["type"], command=self.refresh)
108
+ tt = CTkOptionMenu(self.containerFrame, dynamic_resizing=False, values=['float', 'list', 'custom'], variable=bound["type"], command=self.refresh)
109
109
  #command = lambda _, index=index, option=tt: (self.update_type(index, option))
110
110
  #tt.configure(command=command)
111
111
  #tt.set(bound["type"].get())
@@ -468,226 +468,4 @@ def sensitivity_analysis(url, request_file, trace_file, output_directory):
468
468
  exit(1)
469
469
 
470
470
  if result.is_finished():
471
- download_output(result, output_directory)
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
- """
489
- def run_process_old(stdout_queue, stderr_queue, results_queue, data, folder):
490
- steps = data['steps']
491
- args = data['arguments']
492
- calib = data['calibration_parameters']
493
-
494
- my_mode = args["mode"]
495
-
496
- # If "mode" in args remove it
497
- if "mode" in args:
498
- del args["mode"]
499
-
500
- calibration_map = {}
501
- for param in calib:
502
- param_name = param['name']
503
- param_value = param['value']
504
- calibration_map[param_name] = param_value
505
-
506
- if not os.path.exists(folder):
507
- os.makedirs(folder)
508
-
509
- if not os.path.exists(os.path.join(folder, "results")):
510
- os.makedirs(os.path.join(folder, "results"))
511
-
512
- if (os.path.exists(os.path.join(folder, 'output.txt'))):
513
- os.remove(os.path.join(folder, 'output.txt'))
514
-
515
- if (os.path.exists(os.path.join(folder, 'error.txt'))):
516
- os.remove(os.path.join(folder, 'error.txt'))
517
-
518
- old_stdout = sys.stdout
519
- old_stderr = sys.stderr
520
-
521
- read_stdout, write_stdout = os.pipe()
522
- read_stderr, write_stderr = os.pipe()
523
-
524
- sys.stdout = os.fdopen(write_stdout, 'w')
525
- sys.stderr = os.fdopen(write_stderr, 'w')
526
-
527
- stdout_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stdout, 'r'), stdout_queue))
528
- stderr_thread = threading.Thread(target=enqueue_output, args=(os.fdopen(read_stderr, 'r'), stderr_queue))
529
- stdout_thread.daemon = True
530
- stderr_thread.daemon = True
531
- stdout_thread.start()
532
- stderr_thread.start()
533
-
534
- try:
535
-
536
- options = {}
537
- oh_strategy = {}
538
-
539
- for key in calibration_map.keys():
540
- if "options_" in key:
541
- options[key.replace("options_", "")] = float(calibration_map[key])
542
- if "strategy_" in key:
543
- oh_strategy[key.replace("strategy_", "")] = calibration_map[key]
544
-
545
- config = {}
546
-
547
- if my_mode == "Sampling":
548
- config = {
549
- 'service_timeout': int(calibration_map['service_timeout']),
550
- 'http_retry': int(calibration_map['http_retry']),
551
- 'allow_redirects': True if calibration_map['allow_redirects'] == "True" else False,
552
- 'async_call': True if calibration_map['async_call'] == "True" else False,
553
- 'conn_timeout': int(calibration_map['conn_timeout']),
554
- 'read_timeout': int(calibration_map['read_timeout']),
555
- 'step_trace': os.path.join(folder, 'pso_step_trace.json')
556
- }
557
- elif my_mode == "Optimization":
558
- config = {
559
- 'service_timeout': int(calibration_map['service_timeout']),
560
- 'http_retry': int(calibration_map['http_retry']),
561
- 'http_allow_redirects': True if calibration_map['allow_redirects'] == "True" else False,
562
- 'async_call': True if calibration_map['async_call'] == "True" else False,
563
- 'http_conn_timeout': int(calibration_map['conn_timeout']),
564
- 'http_read_timeout': int(calibration_map['read_timeout']),
565
- 'particles_fail': int(calibration_map['particles_fail']),
566
- 'step_trace': os.path.join(folder, 'pso_step_trace.json')
567
- }
568
-
569
- print("\n")
570
- print(steps)
571
- print("\n")
572
- print(args)
573
- print("\n")
574
- print(calibration_map)
575
- print("\n")
576
- print(options)
577
- print("\n")
578
- print(oh_strategy)
579
- print("\n")
580
- print(config)
581
- print("\n", flush=True)
582
-
583
- if my_mode == "Sampling: Halton":
584
- print("Running Halton Sampling..\n", flush=True)
585
- trace = run_sampler(steps,
586
- args,
587
- int(calibration_map['count']),
588
- int(calibration_map['num_threads']),
589
- "halton",
590
- conf=config,
591
- trace_file=os.path.join(folder, 'results', 'halton_trace.csv'),
592
- offset=int(calibration_map['offset']))
593
- results_queue.put(trace)
594
- print(trace, flush=True)
595
- print("\n", flush=True)
596
-
597
- elif my_mode == "Sampling: Random":
598
- print("Running Random Sampling...\n", flush=True)
599
- trace = run_sampler(steps,
600
- args,
601
- int(calibration_map['count']),
602
- int(calibration_map['num_threads']),
603
- "random",
604
- conf=config,
605
- trace_file=os.path.join(folder, 'results', 'random_trace.csv'))
606
- results_queue.put(trace)
607
- print(trace, flush=True)
608
- print("\n", flush=True)
609
-
610
- elif my_mode == "Sensitivity Analysis":
611
-
612
- print("Running Sensitivity Analysis", flush=True)
613
-
614
- shutil.copyfile(data["sensitivity_analysis_path"], os.path.join(folder, 'results', 'trace.csv'))
615
- trace_path = os.path.join(folder, 'results', 'trace.csv')
616
-
617
- # Get list of parameters from steps
618
- parameters = []
619
- for param in steps[0]['param']:
620
- parameters.append(param['name'])
621
-
622
- request_json = {
623
- "metainfo": {
624
- "service_url": None,
625
- "description": "",
626
- "name": "",
627
- "mode": "async"
628
- },
629
- "parameter": [
630
- {
631
- "name": "parameters",
632
- "value": parameters
633
- },
634
- {
635
- "name": "positiveBestMetrics",
636
- "value": ["ns","kge","mns","kge09","nslog2"]
637
- },
638
- {
639
- "name": "zeroBestMetrics",
640
- "value": ["pbias","rmse"]
641
- }
642
- ]
643
- }
644
-
645
- with open(os.path.join(folder, 'results', 'request.json'), 'w') as json_file:
646
- json.dump(request_json, json_file, indent=4)
647
-
648
- request_path = os.path.join(folder, 'results', 'request.json')
649
-
650
- output_directory = os.path.join(folder, 'results')
651
-
652
- print("Starting ", args['url'], request_path, trace_path, output_directory, flush=True)
653
-
654
- sensitivity_analysis(args['url'], request_path, trace_path, output_directory)
655
-
656
- print("Finished Sensitivity Analysis", flush=True)
657
- else:
658
- print("Running MG-PSO Optimization...\n", flush=True)
659
- optimizer, trace = global_best(steps,
660
- rounds=(int(calibration_map['min_rounds']), int(calibration_map['max_rounds'])),
661
- args=args,
662
- n_particles=int(calibration_map['n_particles']),
663
- iters=int(calibration_map['iters']),
664
- n_threads=int(calibration_map['n_threads']),
665
- options=options,
666
- oh_strategy=oh_strategy,
667
- conf=config
668
- )
669
-
670
- results_queue.put(trace)
671
- print(trace, flush=True)
672
-
673
- print("Finishing up...", flush=True)
674
- time.sleep(5)
675
- except Exception as e:
676
- print("An exception occurred: ", flush=True)
677
- print(str(e))
678
- # Print stack trace
679
- import traceback
680
- traceback.print_exc()
681
-
682
- # Write all of this information to a crash file
683
- with open(os.path.join(folder, 'crash.txt'), 'w') as f:
684
- f.write(str(e))
685
- f.write("\n")
686
- traceback.print_exc(file=f)
687
- finally:
688
- stdout_thread.join()
689
- stderr_thread.join()
690
-
691
- sys.stdout = old_stdout
692
- sys.stderr = old_stderr
693
- """
471
+ download_output(result, output_directory)
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '0.2.97'
5
+ VERSION = '0.2.98'
6
6
  DESCRIPTION = 'GUI for MG-PSO'
7
7
  LONG_DESCRIPTION = open('../README.md').read()
8
8
 
File without changes