Project structure

Top-level

 1NeuroRuler
 2├── .github                     GitHub Actions CI configuration.
 3├── .pre-commit-config.yaml     Pre-commit actions (formatting) configuration.
 4├── .readthedocs.yaml           ReadTheDocs configuration.
 5├── LICENSE
 6├── NeuroRuler                  Source code.
 7├── README.md
 8├── cli.py                      Script for running CLI. Apply -h option to see command-line options.
 9├── cli_config.json             Configuration file for CLI. Overriden by command-line arguments.
10├── data                        Images and ground truth data for unit tests.
11├── docs                        Documentation.
12├── gui.py                      Script for running GUI. Apply -h option to see command-line options.
13├── gui_config.json             Configuration file for GUI. Overriden by command-line arguments.
14├── output                      Output directory.
15├── pyproject.toml              Python project configuration.
16├── requirements.txt            Developer dependencies. Contains all dependencies from setup.py.
17├── requirements_CI.txt         GitHub Actions CI dependencies. Contains all dependencies from setup.py.
18├── setup.py                    Lists all necessary dependencies installed during pip install. Python package configuration.
19├── testdist                    Script for testing pip package before PyPI release.
20├── tests                       Tests. See tests/README.md for a note about skipped CI tests in Ubuntu environments.
21└── tox.ini                     tox config file. Tox is used for running tests in different OS and Python environments.

Source code

 1NeuroRuler
 2├── __init__.py
 3├── CLI
 4│   ├── __init__.py
 5│   └── main.py                 CLI entrypoint.
 6├── GUI
 7│   ├── __init__.py             Defines gui() for users to import after pip installation.
 8│   ├── helpers.py              GUI helper functions.
 9│   ├── main.py                 Contains all GUI code.
10│   ├── mainwindow.ui           PyQt UI skeleton made using Qt Designer (drag-and-drop UI builder).
11│   ├── static
12│   │   └── nr_logo.png         NeuroRuler logo used as icon in GUI.
13│   └── themes                  Contains .qss and resources.py (compiled QRC resources files, GUI icons) files for all themes. Generated by https://github.com/NIRALUser/BreezeStyleSheets.
14│       ├── dark
15│       ├── dark-green
16│       ├── dark-nr
17│       ├── dark-purple
18│       ├── light
19│       ├── light-green
20│       ├── light-nr
21│       └── light-purple
22└── utils
23    ├── __init__.py
24    ├── cli_settings.py         CLI settings set through command-line arguments and cli_config.json.
25    ├── constants.py            Constant values and helper functions. Don't mutate any variable in this file from outside of this file.
26    ├── exceptions.py           Custom exceptions.
27    ├── global_vars.py          Global variables that change throughout program execution.
28    ├── gui_settings.py         GUI settings set through command-line arguments and gui_config.json.
29    ├── img_helpers.py          Image helper functions that aren't quite part of the main algorithm. Mostly holds helper functions for working with global_vars.IMAGE_DICT.
30    ├── imgproc.py              The main contour and arc length algorithm.
31    └── parser.py               Parse config JSON and CLI arguments to set global settings in gui_settings.py and cli_settings.py.

Tree

These diagrams were generated using tree. Irrelevant files were removed, and some hidden dotfiles were added.