Metadata-Version: 2.1
Name: cala
Version: 0.1.0a2
Keywords: pipeline,pipelines,calcium-imaging,data-processing,miniscope
Author-Email: raymondwjang <raymond@physics.ucla.edu>
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Utilities
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Project-URL: homepage, https://cala.readthedocs.io
Project-URL: documentation, https://cala.readthedocs.io
Project-URL: repository, https://github.com/aharoni-lab/cala
Project-URL: changelog, https://cala.readthedocs.io/en/latest/changelog.html
Requires-Python: >=3.11
Requires-Dist: dask>=2024.9.0
Requires-Dist: zarr>=2.18.3
Requires-Dist: pydantic>=2.9.2
Requires-Dist: av>=13.0.0
Requires-Dist: numpydantic>=1.6.3
Requires-Dist: opencv-python>=4.10.0.84
Requires-Dist: tqdm>=4.66.5
Requires-Dist: rich>=13.9.1
Requires-Dist: pydantic-settings>=2.5.2
Requires-Dist: platformdirs>=4.3.6
Requires-Dist: scikit-learn>=1.5.2
Requires-Dist: xarray>=2024.10.0
Requires-Dist: scikit-image>=0.24.0
Requires-Dist: matplotlib>=3.9.3
Requires-Dist: river>=0.22.0
Requires-Dist: numba>=0.61.0
Requires-Dist: sparse>=0.15.5
Requires-Dist: graphlib>=0.9.5
Requires-Dist: seaborn>=0.13.2
Requires-Dist: pywavelets>=1.8.0
Requires-Dist: pyyaml>=6.0.2
Provides-Extra: tests
Requires-Dist: pytest>=8.3.3; extra == "tests"
Requires-Dist: tomli-w>=1.1.0; extra == "tests"
Requires-Dist: pytest-cov>=6.0.0; extra == "tests"
Requires-Dist: radon>=6.0.1; extra == "tests"
Requires-Dist: snakeviz>=2.2.2; extra == "tests"
Requires-Dist: pytest-profiling>=1.8.1; extra == "tests"
Requires-Dist: pytest-timeout>=2.3.1; extra == "tests"
Provides-Extra: docs
Requires-Dist: sphinx>=8.2.3; extra == "docs"
Requires-Dist: furo>=2024.8.6; extra == "docs"
Requires-Dist: myst-parser>=4.0.1; extra == "docs"
Requires-Dist: autodoc-pydantic>=2.2.0; extra == "docs"
Requires-Dist: sphinx-design>=0.6.1; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid>=1.0.0; extra == "docs"
Requires-Dist: myst-nb>=1.2.0; extra == "docs"
Provides-Extra: dev
Requires-Dist: cala[docs,tests]; extra == "dev"
Requires-Dist: sphinx-autobuild>=2024.10.3; extra == "dev"
Requires-Dist: ruff>=0.11.0; extra == "dev"
Requires-Dist: black>=24.10.0; extra == "dev"
Requires-Dist: mypy>=1.15.0; extra == "dev"
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
Requires-Dist: types-setuptools>=78.1.0.20250329; extra == "dev"
Requires-Dist: types-pyYAML>=6.0.12.20250402; extra == "dev"
Requires-Dist: types-requests>=2.32.0.20250328; extra == "dev"
Requires-Dist: twine>=6.1.0; extra == "dev"
Description-Content-Type: text/markdown

# Cala

[![PyPI - Version](https://img.shields.io/pypi/v/cala)](https://pypi.org/project/cala/)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cala)
![PyPI - Status](https://img.shields.io/pypi/status/cala)
[![codecov](https://codecov.io/gh/Aharoni-Lab/cala/graph/badge.svg?token=Apn4YtSvbU)](https://codecov.io/gh/Aharoni-Lab/cala)

## Features

Cala is a neural endoscope image processing tool designed for neuroscience research, with a focus on long-term massive recordings. It features a no-code approach through configuration files, making it accessible to researchers of all programming backgrounds.

## Requirements

- Python 3.11, 3.12, or 3.13
- Dependencies are handled through [pdm](https://pdm-project.org/en/latest/)

## Installation

```shell
pip install cala==0.1.0
```

## Quick Start

1. Prepare your video files
2. Create a configuration file (YAML format)
3. Run the pipeline:

```bash
python main.py --visual --config cala_config.yaml
```

## Architecture

Cala uses a graph-&-state based architecture with three key components:

1. **Configuration System**
   - Supports YAML and env-based configuration
   - No-code pipeline setup
   - Flexible node configuration

2. **Processing Nodes**
   - Modular transformation units
   - Managed automatically by the runner
   - Connected to storage through parameter types

3. **Storage System**
   - Automatically created and updated by the distributor
   - Leverages [Zarr](https://zarr.dev/) for large-scale data storage

Schematics of the architecture can be found [here](https://lucid.app/documents/embedded/808097f9-bf66-4ea8-9df0-e957e6bd0931).

## Documentation

Detailed documentation is available in three main sections:

1. **User Guide**: Step-by-step guide for using Cala
   - Configuration file setup
   - Pipeline structure
   - Processing nodes
   - Advanced features

2. **Developer Guide**: Information for extending Cala
   - Adding new nodes
   - Working with stores
   - Best practices

3. **API Reference**: Available on [Read the Docs](https://cala.readthedocs.io/en/latest/)

## Roadmap

*EOM 04/2025:* UI first iteration complete

## Contributing

We welcome contributions! Please fork this repository and submit a pull request if you would like to contribute to the
project. You can also open issues for bug reports, feature requests, or discussions.

## Test Coverage Status

https://app.codecov.io/gh/Aharoni-Lab/cala

## License

## Contact

For questions or support, please reach out to Raymond Chang
at [raymond@physics.ucla.edu](mailto:raymond@physics.ucla.edu).
