Skip to main content

Welcome to aind-ophys-utils

License Code Style semantic-release: angular Interrogate Coverage Python

Python utility library for processing calcium imaging (optical physiology) data. All interfaces are array-based (NumPy / h5py) with no project-specific data structures, making the modules easy to integrate into any pipeline.

Modules

Module Description
baseline_fitting Robust parametric baseline fitting: M-estimator norms (Tukey biweight variants), IRLS nonlinear fitting with JAX autodiff, robust LOWESS smoother, and a high-level fit_baseline orchestrator that chains bleach-trend fitting with local fluctuation estimation.
dff ΔF/F computation from fluorescence traces. Inactive-frame masking baseline, parallelised across ROIs, with a plot_dff helper for QA visualisation.
signal_utils Signal processing primitives: running percentile filter, nanmedian filter, robust noise standard deviation (MAD / FFT / Welch), and a fast noise estimator using GPU-accelerated FFTs via PyTorch.
summary_images GPU-accelerated summary images for calcium imaging movies: mean, max-correlation (Cn), and peak-to-noise ratio (PNR).
array_utils Array downsampling and subsampling utilities with flexible strategies (mean, max, median, first, last, mid) and optional NaN-skipping.
video_utils H5 video downsampling and VP9 video encoding via imageio-ffmpeg.
motion_border_utils Compute motion borders from frame-shift correction outputs.
segmentation_utils Reduce per-pixel value maps to per-ROI values: a generic reduce_over_masks engine (mean/max/median/... under each mask) and a roi_probabilities wrapper that turns a Cellpose cellprob map into one aggregate probability per ROI.

Installation

pip install aind-ophys-utils

GPU / CPU note. aind-ophys-utils depends on PyTorch, which pulls in CUDA libraries by default from PyPI (~2 GB). To install a CPU-only build instead, install PyTorch first using the official CPU index, then install this package:

pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install aind-ophys-utils

Alternatively, pass --extra-index-url in a single command:

pip install aind-ophys-utils --extra-index-url https://download.pytorch.org/whl/cpu

To use the software from source, clone the repository and in the root directory run

pip install -e .

To develop the code in place, run

pip install -e .[dev]

Contributing

Linters and testing

There are several libraries used to run linters, check documentation, and run tests.

  • Please test your changes using the coverage library, which will run the tests and log a coverage report:
coverage run -m pytest && coverage report
  • Use interrogate to check that modules, methods, etc. have been documented thoroughly:
interrogate .
  • Use flake8 to check that code is up to standards (no unused imports, etc.):
flake8 .
  • Use black to automatically format the code into PEP standards:
black .
  • Use isort to automatically sort import statements:
isort .

Pull requests

For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use Angular style for commit messages. Roughly, they should follow the pattern:

<type>(<scope>): <short summary>

where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  • build: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  • ci: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bugfix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

Semantic Release

The table below, from semantic release, shows which commit message gets you which release type when semantic-release runs (using the default configuration):

Commit message Release type
fix(pencil): stop graphite breaking when too much pressure applied Patch Fix Release, Default release
feat(pencil): add 'graphiteWidth' option Minor Feature Release
perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons.
Major Breaking Release
(Note that the BREAKING CHANGE: token must be in the footer of the commit)

Documentation

To generate the rst files source files for documentation, run

sphinx-apidoc -o doc_template/source/ src 

Then to create the documentation HTML files, run

sphinx-build -b html doc_template/source/ doc_template/build/html

More info on sphinx installation can be found here.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aind_ophys_utils-0.2.0.tar.gz (75.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aind_ophys_utils-0.2.0-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file aind_ophys_utils-0.2.0.tar.gz.

File metadata

  • Download URL: aind_ophys_utils-0.2.0.tar.gz
  • Upload date:
  • Size: 75.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aind_ophys_utils-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d6f46d0b589ac737014ff90abaf5629eb2ec220cae1a3122c5fe8a023a449105
MD5 150126fd8d6c7be17c46d8e688f0fc04
BLAKE2b-256 4c0f2506a7bf698ff4b0c6536fe84ec248362e824f5bbdef4697e13623f41e44

See more details on using hashes here.

File details

Details for the file aind_ophys_utils-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aind_ophys_utils-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c2873760484da9c0a4a90395330d426ae80f180490149b6f21b53c8ba0e5e61
MD5 018d46748f7ea7e90462cb2c50b8dea3
BLAKE2b-256 7f111b3e924ce7c8d1f10e2eda1d3114c43e1a16369d36717d9babf4e0fdb955

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page