mg-pso-gui 0.1.143__py3-none-any.whl → 0.1.145__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mg-pso-gui
3
- Version: 0.1.143
3
+ Version: 0.1.145
4
4
  Summary: GUI for MG-PSO
5
5
  Author: Robert Cordingly
6
6
  Author-email: <rcording@uw.ed>
@@ -1,7 +1,7 @@
1
1
  mgpsogui/__init__.py,sha256=q7AfBjeJABnFtbsZnsObpUwaXKPDVYtz46G6MKXLF74,42
2
2
  mgpsogui/mgpsogui.py,sha256=NIZmyNcbwC8EgSwf1ubdMUSJscrIEgoD4jLYziqHQ-k,148
3
3
  mgpsogui/start.yaml,sha256=ZjCVLb-MLqAxrGRm9kA7_SDpa-45EuKIELNQ2QqCAiU,4713
4
- mgpsogui/gui/HomePage.py,sha256=Nm-yOZ3v6AbMlnU_Z5aFsz_3G5h7dQARmyNMXKvxjWU,24321
4
+ mgpsogui/gui/HomePage.py,sha256=Um5FQiF6CLdAuSz1_71kpLQkcd0BE5cItG6oTdEDP-I,22110
5
5
  mgpsogui/gui/OptionManager.py,sha256=36_MlFd6nLt6xd6HHE2sHtL8oW7VBOZbCvJ8er-wWJ4,12544
6
6
  mgpsogui/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  mgpsogui/gui/PlatformTab/PlatformTab.py,sha256=KyIoHlMKD9nfQqHeGJwRDA4RCoe4UykjB2l6xMTKK_M,10486
@@ -36,7 +36,7 @@ mgpsogui/util/GraphGenerator.py,sha256=KC-qVr4H17rmgfhxZs1P96EEhrBbFgV0vjoTkPvrS
36
36
  mgpsogui/util/PSORunner.py,sha256=Bk6IXsBKSB33uccTJX7xagYwXHLgUbvpcM5qoi1MXHo,6170
37
37
  mgpsogui/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  mgpsogui/util/debug.py,sha256=Swzny9_1S-CCONWGssj9iDoSpbwu5Vr4f95g_9L8bec,19759
39
- mgpsogui/util/helpers.py,sha256=iwWRyBoiQeWz8rF1RDAYvHXE9XYc3km9KQq-H_SDAlU,2459
39
+ mgpsogui/util/helpers.py,sha256=nnRgQ9hCGp5RhyesfT_ZI01CthyuK-VX62yx7ukyTdY,2441
40
40
  mgpsogui/util/sampler_test_driver.py,sha256=1iJTLVFZ_VCsuIdl3mXQBA1GNAH5jJO3z5h4E_bd5U8,3703
41
41
  mgpsogui/util/CTkToolTip/__init__.py,sha256=G1jxV55hGtGgwyC1sR-uUUdasDdh0XZgcI-aILgGYA0,225
42
42
  mgpsogui/util/CTkToolTip/ctk_tooltip.py,sha256=SZMovpQIGvdpDRbqCKl9SHs92DrFCO2MOYL2ifolvOE,6329
@@ -58,8 +58,8 @@ mgpsogui/util/recosu/utils/trace_writer.py,sha256=V9BJlOjCbNYGoXGEk3CF5wjifBxvar
58
58
  mgpsogui/util/recosu/utils/utils.py,sha256=QB8vftq3142ekG0ORjz0ZBHU5YknXbR0oTsrxrPAsF0,3951
59
59
  mgpsogui/util/recosu/utils/plot/__init__.py,sha256=h1KjM7_tNDv351pcwt8A6Ibb1jhwWyx5Gbu-zj-sI3Q,71
60
60
  mgpsogui/util/recosu/utils/plot/cost_steps.py,sha256=1Ce11AJyweWkmvjXPxEygzS-h8yVLmQEDLS53yjPLqQ,3779
61
- mg_pso_gui-0.1.143.dist-info/METADATA,sha256=56mSJ8UvfZZ7QdAER7D3SHoXr9Ad_zFmSOQJ9dYZb4o,9460
62
- mg_pso_gui-0.1.143.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
63
- mg_pso_gui-0.1.143.dist-info/entry_points.txt,sha256=jg82VOFjR1XDGrchs1wJSCqKYE4Ozv12aBcCSp--koA,117
64
- mg_pso_gui-0.1.143.dist-info/top_level.txt,sha256=y7JuS9xJN5YdxUsQ3PSVjN8MzQAnR146bP3ZN3PYWdE,9
65
- mg_pso_gui-0.1.143.dist-info/RECORD,,
61
+ mg_pso_gui-0.1.145.dist-info/METADATA,sha256=ksAKzr61C8esWQ4hL_w1vd0CikHhAm9bpMNGQTjaj2E,9460
62
+ mg_pso_gui-0.1.145.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
63
+ mg_pso_gui-0.1.145.dist-info/entry_points.txt,sha256=jg82VOFjR1XDGrchs1wJSCqKYE4Ozv12aBcCSp--koA,117
64
+ mg_pso_gui-0.1.145.dist-info/top_level.txt,sha256=y7JuS9xJN5YdxUsQ3PSVjN8MzQAnR146bP3ZN3PYWdE,9
65
+ mg_pso_gui-0.1.145.dist-info/RECORD,,
mgpsogui/gui/HomePage.py CHANGED
@@ -176,7 +176,7 @@ class App(customtkinter.CTk):
176
176
 
177
177
  play_image = customtkinter.CTkImage(Image.open(os.path.join("./images", "play.png")), size=(20, 20))
178
178
  self.run_button = customtkinter.CTkButton(self.footer_frame, text=None, width=30, image=play_image, command=self.run)
179
- ctt(self.run_button, delay=0.1, alpha=0.95, message="Start Calibration")
179
+ ctt(self.run_button, delay=0.1, alpha=0.95, message="Start Job")
180
180
  self.run_button.grid(row=0, column=7, padx=(20, 5), pady=header_padding_y)
181
181
 
182
182
  test_image = customtkinter.CTkImage(Image.open(os.path.join("./images", "test.png")), size=(20, 20))
@@ -226,6 +226,13 @@ class App(customtkinter.CTk):
226
226
  self.after(3000, lambda: self.save_button.configure(text="Save"))
227
227
 
228
228
  def refresh_step_view(self, value):
229
+ mode = self.option_manager.get_arguments()['mode'].get()
230
+
231
+ if mode == "Optimization: MG-PSO":
232
+ self.test_button.configure(state="enabled")
233
+ else:
234
+ self.test_button.configure(state="disabled")
235
+
229
236
  self.steps_frame.clear()
230
237
  self.steps_frame.render()
231
238
  self.optimal_param_frame.clear()
@@ -366,11 +373,11 @@ class App(customtkinter.CTk):
366
373
  self.data_x = [0]
367
374
  self.data_y = [0]
368
375
 
369
- self.progress_message_middle.configure(text="Calibration starting...")
376
+ self.progress_message_middle.configure(text="Job starting...")
370
377
  self.footer_progress_label.configure(text="Starting...")
371
378
 
372
- self.textbox.insert("0.0", "Starting calibration...\n\n")
373
- self.textbox.insert("0.0", "Calibration Parameters:\n")
379
+ self.textbox.insert("0.0", "Starting job...\n\n")
380
+ self.textbox.insert("0.0", "Job Parameters:\n")
374
381
  self.textbox.insert("0.0", json.dumps(metrics, indent=4) + "\n\n")
375
382
  try:
376
383
  info = self.option_manager.get_project_data()
@@ -397,9 +404,9 @@ class App(customtkinter.CTk):
397
404
  self.textbox.insert("0.0", "Stack trace:\n")
398
405
  self.textbox.insert("0.0", traceback.format_exc())
399
406
  self.textbox.insert("0.0", "\n\n")
400
- self.textbox.insert("0.0", "Calibration failed!")
407
+ self.textbox.insert("0.0", "Job failed!")
401
408
  self.progress_message_left.configure(text="")
402
- self.progress_message_middle.configure(text="Calibration failed! See error log below.")
409
+ self.progress_message_middle.configure(text="Job failed! See error log below.")
403
410
  self.progress_message_right.configure(text="")
404
411
  self.footer_progress_label.configure(text="Failed")
405
412
  #self.progress_bar.stop()
@@ -426,7 +433,7 @@ class App(customtkinter.CTk):
426
433
  if (os.path.exists(os.path.join(folder, 'error.txt'))):
427
434
  os.remove(os.path.join(folder, 'error.txt'))
428
435
 
429
- self.textbox.insert("0.0", "\nCalibration terminated!\n")
436
+ self.textbox.insert("0.0", "\Job terminated!\n")
430
437
  #self.progress_bar.stop()
431
438
  self.footer_progress_bar.stop()
432
439
  #self.progress_bar.configure(mode="determinate")
@@ -434,7 +441,7 @@ class App(customtkinter.CTk):
434
441
  #self.progress_bar.set(0)
435
442
  self.footer_progress_bar.set(0)
436
443
  self.progress_message_left.configure(text="")
437
- self.progress_message_middle.configure(text="Calibration stopped!")
444
+ self.progress_message_middle.configure(text="Job stopped!")
438
445
  self.footer_progress_label.configure(text="Stopped")
439
446
  self.progress_message_right.configure(text="")
440
447
 
@@ -544,73 +551,23 @@ class App(customtkinter.CTk):
544
551
  traceback.print_exc()
545
552
  print(e)
546
553
 
547
- if (os.path.exists(os.path.join(folder, 'error.txt'))):
548
- mode = self.option_manager.get_arguments()['mode'].get()
549
-
550
- print("Mode: " + mode)
551
-
552
- if mode == "Optimization: MG-PSO":
554
+ # Parse data into interface
555
+ mode = self.option_manager.get_arguments()['mode'].get()
556
+ if mode == "Optimization: MG-PSO":
557
+ if (os.path.exists(os.path.join(folder, 'error.txt'))):
553
558
  data = hp.parse_pso_error(os.path.join(folder, 'error.txt'), len(self.option_manager.get_steps()))
559
+ self.progress_data = data["data"]
554
560
  self.footer_progress_bar.stop()
555
561
  self.footer_progress_bar.configure(mode="determinate")
556
562
  self.footer_progress_bar.set(data["percent"]/100)
557
563
  self.footer_progress_label.configure(text="Round: " + str(data["round"]) + " - Step: " + str(data["step"]))
558
- else:
564
+ else:
565
+ if (os.path.exists(os.path.join(folder, 'output.txt'))):
559
566
  data = hp.parse_sampling_output(os.path.join(folder, 'output.txt'))
560
- self.progress_data = data["data"]
561
567
  self.footer_progress_bar.stop()
562
568
  self.footer_progress_bar.configure(mode="determinate")
563
569
  self.footer_progress_bar.set(data["percent"]/100)
564
- #self.progress_message_left.configure(text="Percent Complete: " + str(round(data["percent"])) + "%")
565
- #self.progress_message_middle.configure(text=str(completed_rounds) + "/" + str(total_rounds))
566
- self.footer_progress_label.configure(text="Percent: " + str(data["percent"]))
567
- #self.progress_message_right.configure(text="Best Cost: " + str(best_cost))
568
-
569
- """with open(os.path.join(folder, 'error.txt'), 'r') as f:
570
- lines = f.readlines()
571
- lines_string = "".join(lines)
572
- self.data_cache = lines_string
573
-
574
- pattern = r'(\d+)%\|.*\|(\d+)/(\d+)(?:,\sbest_cost=(\d+\.\d+))?' # The magic of AI
575
- matches = re.findall(pattern, self.data_cache)
576
- filtered_matches = [match for match in matches if match[3] != '']
577
- matches = filtered_matches
578
-
579
- if len(matches) > 0:
580
- df = pd.DataFrame(matches, columns=['percent', 'completed_rounds', 'total_rounds', 'best_cost'], dtype=float)
581
- df = df[df['best_cost'] != '']
582
- df = df.dropna()
583
- df = df.drop_duplicates()
584
- df['round_step'] = (df['completed_rounds'].diff() < 0).cumsum()
585
- df = df.drop_duplicates(subset=['completed_rounds', 'round_step'])
586
- self.progress_data = df
587
-
588
- match = matches[-1]
589
- percent = int(match[0])
590
- completed_rounds = int(match[1])
591
- total_rounds = int(match[2])
592
- best_cost = float(match[3]) if match[3] else None
593
-
594
- if (percent > 0):
595
- #self.progress_bar.stop()
596
- self.footer_progress_bar.stop()
597
- #self.progress_bar.configure(mode="determinate")
598
- self.footer_progress_bar.configure(mode="determinate")
599
- #self.progress_bar.set(percent/100)
600
- self.footer_progress_bar.set(percent/100)
601
- self.progress_message_left.configure(text="Percent Complete: " + str(percent) + "%")
602
- self.progress_message_middle.configure(text=str(completed_rounds) + "/" + str(total_rounds))
603
- self.footer_progress_label.configure(text=str(completed_rounds) + "/" + str(total_rounds))
604
- self.progress_message_right.configure(text="Best Cost: " + str(best_cost))
605
- else:
606
- #self.progress_bar.configure(mode="indeterminate")
607
- self.footer_progress_bar.configure(mode="indeterminate")
608
- #self.progress_bar.start()
609
- self.footer_progress_bar.start()
610
- self.progress_message_left.configure(text="")
611
- self.progress_message_middle.configure(text="Starting new round...")
612
- self.footer_progress_label.configure(text="Next round...")
613
- self.progress_message_right.configure(text="")"""
570
+ self.footer_progress_label.configure(text=str(round(data["percent"])) + "%")
614
571
 
615
572
 
616
573
 
@@ -624,9 +581,9 @@ class App(customtkinter.CTk):
624
581
  #self.progress_bar.start()
625
582
  self.footer_progress_bar.start()
626
583
  self.progress_message_left.configure(text="")
627
- self.progress_message_middle.configure(text="Calibration finished!")
584
+ self.progress_message_middle.configure(text="Job finished!")
628
585
  self.progress_message_right.configure(text="")
629
- self.textbox.insert("0.0", "\nCalibration finished!\n")
586
+ self.textbox.insert("0.0", "\nJob finished!\n")
630
587
 
631
588
  # IF "./crash.txt" exists write it to the textbox
632
589
  if (os.path.exists(os.path.join(folder, 'crash.txt'))):
mgpsogui/util/helpers.py CHANGED
@@ -30,8 +30,6 @@ def parse_sampling_output(file_path):
30
30
  # Remove any lines that don't contain "% Done "
31
31
  lines = [line for line in lines if '% Done ' in line]
32
32
 
33
- print(lines)
34
-
35
33
  percents = []
36
34
  percent = 0
37
35
  for line in lines: