Architecture Overview

AIVUS-OCT is a desktop application built with PyQt6. The source code lives in src/ and is organised into five packages around clear responsibilities.

Entry Point

main.py initialises logging, applies the dark theme, and launches the Master window via Hydra configuration.

GUI (gui/)

The Master class in gui.py is the central coordinator. It owns all application state — loaded images, contours, gating data, metadata — and wires together every other module. Sub-packages handle distinct regions of the interface:

  • left_half/ — frame-by-frame image display and manual contouring canvas

  • right_half/ — longitudinal view and gating signal display

  • popup_windows/ — results plots, small previews, video player, and dialogs

  • utils/ — shared GUI helpers: geometry math, contour rendering, metrics, custom slider widget

Input / Output (input_output/)

  • read_image.py — loads DICOM and NIfTI files, normalises pixel data, and populates the display

  • metadata.py — parses DICOM tags (patient info, imaging parameters) and renders them in a table; handles IVUS and OCT modality differences

  • contours_io.py — defines Contour, FrameData, and Measurements data structures; serialises and deserialises contour sessions to disk

Gating (gating/)

Cardiac gating extracts diastolic/systolic frames from an image sequence.

  • automatic_gating.py — dialog for selecting the gating method (maxima or extrema)

  • contour_based_gating.py — derives a gating signal from contour area measurements over time

  • signal_processing.py — shared signal processing utilities used by both gating methods

Segmentation (segmentation/)

  • segment.py — runs the neural network predictor on IVUS frames and converts output masks to contours with measurements

  • predict.py — model loading and inference

  • segment_files.py — batch segmentation of files outside the GUI

  • save_as_nifti.py — exports segmentation masks as NIfTI volumes

Reporting (report/)

report.py aggregates per-frame lumen measurements into a summary report, generates result plots, and exports data as CSV files.