__init__.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import time
  2. from typing import Any, Dict
  3. from util.progress import ProgressTracker
  4. from util.ui_logger import PipelineLogger
  5. from . import load_data
  6. from . import train_bayesian
  7. from . import train_normal
  8. def dummy_task(
  9. tracker: ProgressTracker,
  10. logger: PipelineLogger,
  11. config: Dict[str, Any],
  12. state: Dict[str, Any],
  13. ):
  14. stop_event = state["events"]["stop"]
  15. pause_event = state["events"]["pause"]
  16. steps = 5
  17. # The title is now set gracefully by the parent injecting the sub_tracker,
  18. # so we just initialize the total.
  19. tracker.update(total=steps, advance=0)
  20. logger.info("Initializing process...")
  21. for i in range(steps):
  22. if stop_event.is_set():
  23. raise InterruptedError("Pipeline execution stopped by user.")
  24. while pause_event.is_set():
  25. time.sleep(0.5)
  26. if stop_event.is_set():
  27. raise InterruptedError(
  28. "Pipeline execution stopped by user while paused."
  29. )
  30. # Child Process (Sub Progress Tracker)
  31. sub_steps = 10
  32. sub_tracker = tracker.get_sub_tracker(f"Batch {i + 1}")
  33. sub_tracker.update(total=sub_steps, advance=0)
  34. for j in range(sub_steps):
  35. if stop_event.is_set():
  36. raise InterruptedError("Pipeline execution stopped by user.")
  37. time.sleep(0.05)
  38. sub_tracker.update(advance=1) # Advance sub task
  39. tracker.update(advance=1) # Advance main task (clears sub task)
  40. if i == 2:
  41. logger.info("Halfway through current task execution...")
  42. PIPELINE_TASKS = {
  43. "load_data": {
  44. "task_name": "Load Image and ADNIMERGE",
  45. "task_func": load_data.load_data_task,
  46. },
  47. "train_regular": {
  48. "task_name": "Train Regular Models",
  49. "task_func": train_normal.train_normal_task,
  50. },
  51. "train_bayesian": {
  52. "task_name": "Train Bayesian Models",
  53. "task_func": train_bayesian.train_bayesian_task,
  54. },
  55. "evaluate_regular": {
  56. "task_name": "Evaluate Regular Models",
  57. "task_func": dummy_task,
  58. },
  59. "evaluate_bayesian": {
  60. "task_name": "Evaluate Bayesian Models",
  61. "task_func": dummy_task,
  62. },
  63. }
  64. SCENARIOS = {
  65. "scen_train_all": {
  66. "label": "1. Train, Evaluate, & Noise Analysis",
  67. "tasks": [
  68. "load_data",
  69. "train_regular",
  70. "train_bayesian",
  71. "evaluate_regular",
  72. "evaluate_bayesian",
  73. ],
  74. },
  75. "scen_load_all": {
  76. "label": "2. Load, Evaluate, & Noise Analysis",
  77. "tasks": ["load_data", "evaluate_regular", "evaluate_bayesian"],
  78. },
  79. "scen_load_eval": {
  80. "label": "3. Load & Evaluate (Skip Noise)",
  81. "tasks": ["load_data", "evaluate_regular", "evaluate_bayesian"],
  82. },
  83. }