Ultra high throughput image processing for laser doppler holography applied to retinal imaging.
TODO
holoflow
| .clang-format
| CMakeLists.txt
| CMakePresets.json
|
+---bench/
| | CMakeLists.txt
| +---curaii/ CMakeLists.txt ...
| +---holofile/ CMakeLists.txt ...
| +---holoflow/ CMakeLists.txt ...
| \---holovibes/ CMakeLists.txt ...
|
+---cmake/
| ProjectOptions.cmake
|
+---doc/
| CMakeLists.txt
|
+---external/
| CMakeLists.txt
|
+---src/
| | CMakeLists.txt
| +---curaii/
| | | CMakeLists.txt
| | +---include/curaii/*.hh
| | \---src/*.cc *.cu
| +---holofile/
| | | CMakeLists.txt
| | +---include/holofile/*.hh
| | \---src/*.cc
| +---holoflow/
| | | CMakeLists.txt
| | +---include/holoflow/*.hh
| | \---src/*.cc *.cu
| \---holovibes/
| | CMakeLists.txt
| \---src/
| main.cc ...
|
\---test/
| CMakeLists.txt
+---curaii/ CMakeLists.txt ...
+---holofile/ CMakeLists.txt ...
+---holoflow/ CMakeLists.txt ...
\---holovibes/ CMakeLists.txt ...
- Windows 10/11 x64
- MSVC (Visual Studio Build Tools 2022) and SDK
- CMake >= 3.24 usually comes with VS
- Ninja (Multi-Config) usually comes with VS
- CUDA Toolkit (13.0+ recommended)
- x64 Native Tools Command Prompt (for running all commands)
- Python >= 3.10
- Git
- Qt >= 6.5 with
Qt Graphspackage enabled during a custom installation. SetQt6_DIRenv var to your Qt installation path, e.g.C:\Qt\6.5.2\msvc2019_64\lib\cmake\Qt6, addC:\Qt\6.5.2\msvc2019_64\binto yourPATH - Intel oneAPI Base Toolkit add
C:\Program Files (x86)\Intel\oneAPI\mkl\latest\binandC:\Program Files (x86)\Intel\oneAPI\compiler\latest\binto yourPATH - Node.js (both
nodeandnpmin yourPATH) - quicktype install via
npm install -g quicktype
The python dependencies are listed in requirements.txt. The recommended way to set up the Python environment is by using a virtual environment. You can create and activate a virtual environment using the following commands:
# Create a virtual environment
python -m venv .venv
# Activate the virtual environment
.\.venv\Scripts\activate.batAfter activating the virtual environment, you can install the required Python packages using:
pip install -r requirements.txtNinja Multi-Config is used. One configure step, many build configs.
cmake --preset msvc-multiPROJECT_CUDA_ARCHS(string list, default75;86;89;90)ENABLE_TESTING(ON/OFF)ENABLE_BENCHMARKS(ON/OFF)ENABLE_DOCUMENTATION(ON/OFF)ENABLE_FETCHCONTENT(ON/OFF)ENABLE_WARNINGS(ON/OFF)ENABLE_WARNINGS_AS_ERRORS(ON/OFF)ENABLE_IPO(ON/OFF)
Set at configure time:
cmake --preset msvc-multi -DPROJECT_CUDA_ARCHS="86;89" -DENABLE_DOCUMENTATION=ONcmake --build --preset build-Debug -j
cmake --build --preset build-Release -jArtifacts appear under build/msvc-multi/.
The main application is holovibes.
# Example
build\msvc-multi\Release\holovibes.exe --helpThe individual tests can be run from cmd:
build\msvc-multi\Debug\holoflow_test.exeThis project uses CMake, CPack, and the NSIS installer generator to produce a Windows installer (.exe) that contains the compiled application and all required Qt runtime libraries.
Before packaging, make sure these following tools are installed :
To generate the installer, run:
cmake --build --preset build-Release --target package -jIt will generate the installer inside the build\msvc-multi\ folder.
TODO
This project’s documentation is built using MkDocs and organized into a structured set of Markdown (.md) files.
Link to the documentation.
Before building or serving the documentation, ensure that all required Python dependencies are installed. If not, you can refer to the Python dependencies section of the README.
Make sure you are working inside the project’s virtual environment. If it is not already activated, you can activate it with:
.\.env\Scripts\activateNavigate to the documentation directory, which contains the mkdocs.yml configuration file:
cd doc\mkdocsYou must run all MkDocs commands from the directory where the mkdocs.yml file is located.
You can now start the MkDocs development server:
mkdocs serveThis command will launch a local web server where you can preview the documentation during development.
The JSON schemas are generated using the json-schema-for-humans dependency. They are used to display the settings associated of each node.
To generate a new schema, you must first create the corresponding xxx_settings.json file inside the src/holovibes/schemas/tasks/ directory.
Once the file is created, run the following command:
generate-schema-doc src\holovibes\schemas\tasks\node_type\xxx_settings.json doc\mkdocs\docs\schemas\node_type\xxx_settings.md --config template_name=mdYou must run this command in Python Virtual Environment
- FetchContent: enabled by
ENABLE_FETCHCONTENT=ON. Dependencies declared inexternal/CMakeLists.txt.
This project uses Git for version control. Make sure to have Git installed and configured on your system. This project follows the Conventional Commits specification. This project comes with pre-commit hooks to enforce coding standards. You can enable these hooks by running:
pre-commit installThis project is licensed under the Apache License 2.0. See LICENSE for details.