tasks.py 2.6 KB

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