Catalog PyPI
Back to packageRELEASE DETAILS

0.2.0

PyPI

aind-ophys-utils

Generated from aind-library-template

Published8 Jul 2026
Direct dependencies17
Transitive dependenciesNot calculated

README

Version 0.2.0 documentation

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

ModuleDescription
baseline_fittingRobust 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_utilsSignal 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_imagesGPU-accelerated summary images for calcium imaging movies: mean, max-correlation (Cn), and peak-to-noise ratio (PNR).
array_utilsArray downsampling and subsampling utilities with flexible strategies (mean, max, median, first, last, mid) and optional NaN-skipping.
video_utilsH5 video downsampling and VP9 video encoding via imageio-ffmpeg.
motion_border_utilsCompute motion borders from frame-shift correction outputs.
segmentation_utilsReduce 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 messageRelease type
fix(pencil): stop graphite breaking when too much pressure appliedPatch Fix Release, Default release
feat(pencil): add 'graphiteWidth' optionMinor 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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 17

Native requirements
17 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
h5py
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
h5py>=3.11runtime
imageio-ffmpeg
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
imageio-ffmpeg>=0.5runtime
jax
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
jax>=0.4.26runtime
matplotlib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
matplotlib>=3.9runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pandas>=2.2.2runtime
scikit-image
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
scikit-image>=0.24runtime
scipy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
scipy>=1.11runtime
statsmodels
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
statsmodels>=0.14.2runtime
torch
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
torch>=2.3runtime
black
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
black; extra == "dev"runtime
coverage
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
coverage; extra == "dev"runtime
flake8
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
flake8; extra == "dev"runtime
interrogate
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
interrogate; extra == "dev"runtime
isort
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
isort; extra == "dev"runtime
Sphinx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
Sphinx; extra == "dev"runtime
furo
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
furo; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest; extra == "dev"runtime

Distribution files

2 collected
aind_ophys_utils-0.2.0-py3-none-any.whl

bdist_wheel · 33.63 KB · Python py3

Source file
aind_ophys_utils-0.2.0.tar.gz

sdist · 73.54 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 11:30 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:603898d433d1cec8d68ed9043e873ac49d2c9c2bfdf34c6c7125deac16434112

Other collected versions

View all collected versions →