Metadata-Version: 2.4
Name: orbit-gui
Version: 0.1.1
Summary: Assessment-forward analysis pipeline and GUI for functional neural optical imaging
Author: Adam Charles
License: MIT
Project-URL: Homepage, https://github.com/NeuralCoDy/orbit-gui
Project-URL: Repository, https://github.com/NeuralCoDy/orbit-gui
Project-URL: Issues, https://github.com/NeuralCoDy/orbit-gui/issues
Keywords: calcium-imaging,neuroscience,microscopy,source-extraction,roi,image-processing
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Requires-Dist: scikit-image>=0.21
Requires-Dist: scikit-learn>=1.3
Requires-Dist: opencv-python-headless>=4.8
Requires-Dist: PyWavelets>=1.4
Requires-Dist: threadpoolctl>=3.1
Requires-Dist: pygraft-gui>=0.3.0
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Provides-Extra: gui
Requires-Dist: PySide6>=6.5; extra == "gui"
Requires-Dist: pyqtgraph>=0.13; extra == "gui"
Requires-Dist: tifffile>=2023.7; extra == "gui"
Requires-Dist: h5py>=3.9; extra == "gui"
Requires-Dist: roiapp>=0.1.0; extra == "gui"
Requires-Dist: matplotlib>=3.7; extra == "gui"
Requires-Dist: astropy>=5.3; extra == "gui"
Requires-Dist: psutil>=5.9; extra == "gui"
Dynamic: license-file

# orbit-gui

An assessment-forward GUI for the analysis of functional neural optical imaging data:
validation metrics are computed and surfaced at every pipeline stage (motion correction,
source identification, demixing, ...), not bolted on at the end.

## Layout

- `src/orbit/` -- pure-Python algorithm and validation-metric core, no Qt. Every stage
  and every metric is a standalone function (e.g. `orbit.projections.mean_projection`),
  independently unit-tested, and called by the GUI rather than implemented inside it.
- `src/orbitapp/` -- the PySide6 GUI shell. One tab per pipeline stage; tabs only call
  `orbit` functions and display results. Mirrors the architecture of the sibling
  [pyGraFT](https://github.com/adamshch/GraFT-analysis) project (`AppState` +
  per-stage tabs), and reuses the `MovieSliderWidget` bundled with the
  [roiapp](https://pypi.org/project/roiapp/) distribution for movie playback.

## Install

```bash
pip install orbit-gui[gui]
```

or, for a development checkout:

```bash
pip install -e ".[test,gui]"
```

`orbit`'s native (C++) accelerator for the slower per-pixel/per-trace operations
(local correlation and mode projections, OASIS deconvolution, the per-pixel
Ljung-Box test) builds automatically whenever a C++ compiler is available (via
`setup.py`'s `ext_modules` -- see PyPI's published wheels, which ship it
prebuilt) -- falls back to pure numpy/Python if no compiler is found, so this
never blocks `pip install`. To rebuild it in place after editing the `.cpp`
source, without reinstalling:

```bash
src/orbit/_native/build_native.sh
```

Real-SEUDO's own per-cell FISTA solve has a separate optional accelerator (also
falls back to pure Python if skipped) -- needs FFTW3 in addition to a C++14
compiler and pybind11 (Debian/Ubuntu: `apt-get install libfftw3-dev`). It builds
automatically alongside the accelerator above wherever FFTW3 is found (including
in PyPI's published wheels, on the platforms where FFTW3 could be provisioned in
CI). To rebuild it in place after editing the `.cpp` source, without reinstalling:

```bash
src/orbit/seudo/_native/build_native.sh
```

## Run

```bash
python3 -m orbitapp
```

## Develop

```bash
pytest
```

## Status

- **Load**: a movie (TIFF/folder-of-TIFFs/NPY/H5/MAT), previewed via an embedded,
  scrubbable movie player.
- **Data Projections**: mean/median/mode/variance/Fano-factor/local-correlation
  projections, computed lazily and cached.
- **Motion Correction**: rigid, piecewise-rigid, or PatchWarp-style piecewise-affine
  registration, with quality metrics (mMD/mCM/ECC, singular-value-spectrum tightening,
  spatial PC maps) shown alongside the before/after images. Runs in the background;
  results are explicit candidates previewed in the tab until committed to the active
  dataset, which is then recorded in the header's pipeline breadcrumb.

Later phases add source identification and demixing/contamination assessment -- see
project memory for the full roadmap.

