Project structure

Root

 1NeuroRuler
 2├── .github                     GitHub Actions CI configuration
 3├── .pre-commit-config.yaml     Pre-commit actions (formatting) configuration
 4├── .readthedocs.yaml           ReadTheDocs configuration
 5├── CITATION.cff                Metadata for "Cite this repository" button on GitHub homepage
 6├── LICENSE                     MIT
 7├── NeuroRuler                  Source code
 8├── README.md
 9├── cli.py                      Script for running CLI. Apply -h option to see command-line options
10├── cli_config.json             Configuration file for CLI. Overriden by command-line arguments
11├── data                        Images and ground truth data for unit tests
12├── docs                        Documentation
13├── gui.py                      Script for running GUI. Apply -h option to see command-line options
14├── gui_config.json             Configuration file for GUI. Overriden by command-line arguments
15├── output                      Output directory
16├── pyproject.toml              Python project configuration
17├── requirements.txt            Developer dependencies, contains all dependencies from setup.py
18├── requirements_CI.txt         GitHub Actions CI dependencies, contains all dependencies from setup.py
19├── setup.py                    Python package configuration; lists all necessary dependencies installed during pip install
20├── testdist                    Script for testing package before PyPI release
21├── tests                       See tests/README.md for a note about skipped CI tests in Ubuntu environments
22└── 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 part of the main algorithm, mostly holds helper functions for working with global_vars.IMAGE_DICT
30    ├── imgproc.py              Functions relating to 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.