Skip to content

DigitalHolography/DopplerView

Repository files navigation

DopplerView

DopplerView is a deep-learning tool for image enhancement, vascular segmentation, and topology inference that processes HoloDoppler results into vascular maps and analysis-ready inputs for EyeFlow, using a DAG-based pipeline and a configurable model registry.

The project provides:

  • A deterministic DAG-based processing pipeline
  • Automatic dependency resolution and selective recomputation
  • A model registry with HuggingFace integration
  • CLI execution
  • A tkinter-based App used for deployement, with minimal and advanced UI

Overview

DopplerView operates on Holodoppler acquisition folders.

The pipeline processes spectral moments derived from Doppler holograms and performs:

  1. Preprocessing

    • Image normalization, flat-field correction and optional registration.
  2. Optic disc detection

  3. Binary vessel segmentation

    • Deep learning–based vessel mask extraction, of retinal and choroidal vessels.
    • Using model publicly available on huggingface, trained with M0 images available on huggingface.
  4. Pulse analysis

  5. Artery/vein semantic segmentation

    • Following the strategy described in the same paper.
    • Using models publicly available on huggingface. The different models used in the pipelines are indicated in models.yaml.
    • The dataset used for training is publicly available on huggingface, with the M0 images and temporal cues already computed.
  6. Estimation of the velicity in the retinal vessels

  7. ArterialWaveformAnalysisStep

    • Per-beat signal analysis

The entire workflow is implemented as a Directed Acyclic Graph (DAG) with automatic dependency resolution and fingerprint-based cache validation.


Installation

Clone the repository:

git clone https://github.com/your-org/DopplerView.git

Create and activate a virtual environment:

python -m venv .venv
source .venv/Scripts/activate

Install in editable mode:

pip install -e .
pip install -r requirements.txt

Usage

DopplerView runs using a .holo folder with a corresponding HoloDoppler folder, with the following structure :

measure_id.holo
measure_id/
└── measure_id_HD/
    ├── json/
    │   └── parameters_holodoppler.json      # The rendering parameters
    ├── h5/
    │   └── measure_id_HD_output.h5          # The .h5 file used as input
    ├── mp4/                                 # Video of the rendered moments
    └── png/                                 # Visualization of the rendering

Executable (InnoSetup + TKinter)

  • Download the .exe of the latest release, and let the installer do its things. Configurations files will be automatically loaded in C:\Users\user_name\AppData\Roaming\DopplerView\release_version
  • Run DopplerView.exe
    • Drag and drop one or several .holo file(s), a folder containing .holo file(s) or a .txt file with the list of inputs, and click on Run full pipeline
    • To select the steps and the config used in the pipeline, activate the Advanced view (View > Advanced View)
    • To modify the models used in the pipline, the configuration or the .h5 output format : Config > Open Configuration

CLI

The CLI runs the full pipeline on a Holodoppler acquisition folder.

dopplerview /path/to/measure.holo --config config.json

Arguments

  • -h, --help show this help message and exit
  • -c CONFIG, --config CONFIG Path to JSON configuration file
  • -t TARGETS [TARGETS ...], --targets TARGETS [TARGETS ...] List of target steps to run
  • -d, --debug Enable debug mode. In this mode, steps outputs are read from the cache.h5 (C:\Users\user_name\.cache\dopplerview\cache\measure_name\cache.h5), and
    only targeted steps are re-run. This is useful for debugging specific
    steps without having to re-run the entire pipeline.

Example

dopplerview ./data/patient_01 \
    --config ./configs/default.json \

Project Structure

DopplerView/
│
├── dopplerview/
│   ├── input_output/      # Folder reading & output handling
│   ├── models/            # Registry, manager, wrappers
│   ├── pipeline/          # DAG engine, steps, context
│   ├── utils/
│   │   └── ...
│   ├── ui                 # Tkinter GUI
│   │   └── ...
│   ├── cli.py             # Command-line script
│   └── ...
│
├── README.md
├── WORKFLOW.md            # Architecture documentation
├── CONTRIBUTING.md        # Developer guide
├── CHANGELOG.md           # Releases description
└── LICENSE

Configuration

The pipeline configuration is provided via a JSON file. It can either be the User configuration in C:\Users\user_name\AppData\Roaming\DopplerView\release_version\default_DV_params.json

It controls:

  • Preprocessing parameters
  • Model-related parameters
  • Task-specific thresholds
  • Runtime options

Fingerprinting ensures that changing configuration only recomputes affected steps.

See WORKFLOW.md for details on how configuration impacts execution.


Output

The first execution of DopplerView creates a folder named measure_id_DV in the parent directory of the input measure_id_HDfolder, with following structure :

measure.holo
measure/
├── measure_HD/
└── measure_DV/
   ├── h5/
   │   └── measure_id_DV.h5      # The .h5 output
   ├── output/                   # Output folders used for debuging
   │   ├── output_0
   │   └── ...
   └── json/
       └── DV_params.json        # The pipeline configuration

Each pipeline run overwites the results in the .h5 file. The content of the .h5 file is decided by the h5_schema.json. It also creates an output folder, with the content produced by each step, depending on the output_config.json.


Documentation

  • Architecture and execution model → WORKFLOW.md
  • How to add steps or models → CONTRIBUTING.md

License

GPL-3

About

DopplerView is a deep-learning tool for image enhancement, vascular segmentation, and topology inference that processes HoloDoppler results into vascular maps and analysis-ready inputs for EyeFlow, using a DAG-based pipeline and a configurable model registry.

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages