Skip to main content

Welcome to ROICaT

ROICaT

Ask DeepWiki build PyPI version Downloads build

🎉 CONTRIBUTIONS WELCOME! 🎉
See the TODO section

Region Of Interest Classification and Tracking ᗢ

A simple-to-use Python package for automatically classifying images of cells and tracking them across imaging sessions/planes.

tracking_FOV_clusters_rich

Why use ROICaT?

  • It's easy to use. You don't need to know how to code. You can use the interactive notebooks or online app to run the pipelines with just a few clicks.
  • It's accurate. ROICaT was designed to be better than existing tools. It is capable of classifying and tracking neuron ROIs at accuracies approaching human performance out of the box.
  • It's fast and computational requirements are low. You can run it on a laptop. It was designed to be used with >1M ROIs, and can utilize GPUs to speed things up.

With ROICaT, you can:

  • Classify ROIs into different categories (e.g. neurons, dendrites, glia, etc.).
  • Track ROIs across imaging sessions/planes (e.g. ROI #1 in session 1 is the same as ROI #7 in session 2).

What data types can ROICaT process?

  • ROICaT can accept any imaging data format including: Suite2p, CaImAn, CNMF, NWB, raw/custom ROI data and more. See below for details on how to use any data type with ROICaT.


How to use ROICaT

ROICaT

TRACKING:

roicat --pipeline tracking --path_params /path/to/params.yaml --dir_data /folder/with/data/ --dir_save /folder/save/ --prefix_name_save expName --verbose

CLASSIFICATION:

OTHER:

  • Custom data importing notebook
  • Use the API to integrate ROICaT functions into your own code: Documentation.
  • Run the full tracking pipeline using the CLI or roicat.pipelines.pipeline_tracking with default parameters generated from roicat.util.get_default_parameters() saved as a yaml file.

Installation

ROICaT works on Windows, MacOS, and Linux. If you have any issues during the installation process, please make a github issue with the error.

0. Requirements

  • Python 3.11 or 3.12 (3.13 is not yet supported).
  • Anaconda or Miniconda.
  • The below commands should be run in the terminal (Mac/Linux) or Anaconda Prompt (Windows).

1. (Recommended) Create a new conda environment

conda create -n roicat python=3.12
conda activate roicat

You will need to activate the environment with conda activate roicat each time you want to use ROICaT.

2. Install ROICaT

pip install roicat[all]

Note on zsh: if you are using a zsh terminal, change command to: pip3 install --user 'roicat[all]'
Note on installing GPU support on Windows: see GPU Troubleshooting documentation.
Note on opencv: The headless version of opencv is installed by default. If the regular version is already installed, you will need to uninstall it first.

3. Clone the repo to get the notebooks

git clone https://github.com/RichieHakim/ROICaT

Then, navigate to the ROICaT/notebooks/jupyter directory to run the notebooks.

Quick Start

After installation, you can run the tracking pipeline with just a few lines of Python:

import roicat

# Run the tracking pipeline with default parameters
params = roicat.util.get_default_parameters(pipeline='tracking')
params['data_loading']['dir_outer'] = '/path/to/your/data/'
params['data_loading']['data_kind'] = 'suite2p'

results, run_data, params = roicat.pipelines.pipeline_tracking(params)

For more detailed usage, see the interactive notebooks or the documentation.

Upgrading versions

There are 2 parts to upgrading ROICaT: the Python package and the repository files which contain the notebooks and scripts.
Activate your environment first, then...
To upgrade the Python package, run:

pip install --upgrade roicat[all]

To upgrade the repository files, navigate your terminal to the ROICaT folder and run:

git pull

General workflow:

  • Pass ROIs through ROInet: Images of the ROIs are passed through a neural network which outputs a feature vector for each image describing what the ROI looks like.
  • Classification: The feature vectors can then be used to classify ROIs:
    • A simple regression-like classifier can be trained using user-supplied labeled data (e.g. an array of images of ROIs and a corresponding array of labels for each ROI).
    • Alternatively, classification can be done by projecting the feature vectors into a lower-dimensional space using UMAP and then simply circling the region of space to classify the ROIs.
  • Tracking: The feature vectors can be combined with information about the position of the ROIs to track the ROIs across imaging sessions/planes.

Run the app locally

Although, we recommend transitioning to using the notebooks or CLI instead of the app, you can download and run the app locally with the following command:

sudo docker run -it -p 7860:7860 --platform=linux/amd64 --shm-size=10g registry.hf.space/richiehakim-roicat-tracking:latest streamlit run app.py

TODO:

algorithmic improvements:

  • Add in method to use more similarity metrics for tracking
  • [ ] Coordinate descent on each similarity metric
  • Add F and Fneu to data_roicat, dFoF and trace quality metric functions
  • Add in notebook for demonstrating using temporal similarity metrics (SWT on dFoF)
  • Make a standard classifier
  • Try other clustering methods
  • Make image aligner based on image similarity + RANSAC of centroids or s_SF
  • Better post-hoc curation metrics and visualizations
  • Discount the non-rigid warp masks towards the edges to be more like the rigid warp map in order improve border performance
  • Make non-rigid image registration optional

code improvements:

  • Finish ROIextractors integration
  • Update automatic regression module (make new repo for it)
  • Switch to ONNX for ROInet
  • Some more integration tests
  • Figure out RNG / OS differences issues for tests
  • Add more documentation / tutorials
  • Make a GUI
  • Add settings to the webapp GUI
  • Make a Docker container
  • Make colab demo notebook have demo data
  • Make a better CLI
  • Switch to pyproject.toml
  • Improve params.json / default params system
  • Spruce up training code
  • Switch off pickling optuna save file
  • Try training on cellpose datasets
  • Python 3.13

other:

  • Write the paper
  • Make tweet about it
  • Make a video or two on how to use it
  • [ ] Maybe use lightthetorch for torch installation
  • Better Readme
  • More documentation
  • Make a regression model for in-plane-ness
  • Formalize bounty program

Download files

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

Source Distribution

roicat-1.7.6.tar.gz (342.0 kB view details)

Uploaded Source

Built Distribution

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

roicat-1.7.6-py3-none-any.whl (290.5 kB view details)

Uploaded Python 3

File details

Details for the file roicat-1.7.6.tar.gz.

File metadata

  • Download URL: roicat-1.7.6.tar.gz
  • Upload date:
  • Size: 342.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for roicat-1.7.6.tar.gz
Algorithm Hash digest
SHA256 f5ab31692a44fe990aefdf6b888e96670965633bb2aa065467c66e5f3971384a
MD5 621ad8d5a33a1fbdcd955c9147017914
BLAKE2b-256 034ca5a7f657777636c1060393c32c63b17cf31969ef0d05c411037ffe158050

See more details on using hashes here.

Provenance

The following attestation bundles were made for roicat-1.7.6.tar.gz:

Publisher: pypi_release.yml on RichieHakim/ROICaT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roicat-1.7.6-py3-none-any.whl.

File metadata

  • Download URL: roicat-1.7.6-py3-none-any.whl
  • Upload date:
  • Size: 290.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for roicat-1.7.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6e0d07bd85092e89a3ca2e929a67a91f78ce101ec1608f8e75366d4c4573e331
MD5 760a9d0229a90ac0462bd6477650145f
BLAKE2b-256 94787453482d2bd0a34ac52529c55e44e8ba0da189ea4ece86a6b89b66391b5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for roicat-1.7.6-py3-none-any.whl:

Publisher: pypi_release.yml on RichieHakim/ROICaT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.7.7

2 files

This release

1.7.6 This release

2 files

1.7.5

2 files

1.7.4

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.4.8

2 files

1.4.7

2 files

1.4.6

2 files

1.4.4

2 files

1.4.3

2 files

1.4.1

2 files

1.3.3

2 files

1.3.2

2 files

1.3.0

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.38

2 files

1.1.37

2 files

1.1.36

2 files

1.1.34

2 files

1.1.32

2 files

1.1.29

2 files

1.1.28

2 files

1.1.27

2 files

1.1.26

2 files

1.1.25

2 files

1.1.24

2 files

1.1.23

2 files

1.1.22

2 files

1.1.21

2 files

1.1.20

2 files

1.1.19

2 files

1.1.18

2 files

1.1.17

2 files

1.1.16

2 files

1.1.15

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

1 file

1.1.1

1 file

1.1.0

1 file

0.1.1

1 file

0.1.0

1 file

Supported by

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