roicat


Nameroicat JSON
Version 1.5.3 PyPI version JSON
download
home_pagehttps://github.com/RichieHakim/ROICaT
SummaryA library for classifying and tracking ROIs.
upload_time2025-07-26 19:02:24
maintainerNone
docs_urlNone
authorRichard Hakim
requires_python<3.14,>=3.10
licenseLICENSE
keywords neuroscience neuroimaging machine learning deep learning
VCS
bugtrack_url
requirements hdbscan holoviews jupyter kymatio matplotlib natsort numpy opencv_contrib_python_headless optuna Pillow pytest scikit_learn scipy seaborn sparse tqdm umap_learn xxhash bokeh psutil py_cpuinfo PyYAML mat73 torch torchvision torchaudio selenium skl2onnx onnx onnxruntime jupyter_bokeh onnx2torch scikit-image richfile romatch-roicat kornia
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Welcome to ROICaT

<div>
    <img src="docs/media/logo1.png" alt="ROICaT" width="200"  align="right"  style="margin-left: 20px"/>
</div>

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RichieHakim/ROICaT)
[![build](https://github.com/RichieHakim/ROICaT/actions/workflows/.github/workflows/build.yml/badge.svg)](https://github.com/RichieHakim/ROICaT/actions/workflows/build.yml) 
[![PyPI version](https://badge.fury.io/py/roicat.svg)](https://badge.fury.io/py/roicat)
[![Downloads](https://pepy.tech/badge/roicat)](https://pepy.tech/project/roicat)
[![build](https://github.com/RichieHakim/ROICaT/actions/workflows/.github/workflows/check_huggingface_space.yml/badge.svg)](https://github.com/RichieHakim/ROICaT/actions/workflows/check_huggingface_space.yml)


**🎉 CONTRIBUTIONS WELCOME! 🎉** \
See the [TODO](#todo) section

- **Documentation: [https://roicat.readthedocs.io/en/latest/](https://roicat.readthedocs.io/en/latest/)**. 
- Overview: [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RichieHakim/ROICaT)
- Discussion forum: [https://groups.google.com/g/roicat_support](https://groups.google.com/g/roicat_support)
- Technical support: [Github Issues](https://github.com/RichieHakim/ROICaT/issues)

## **R**egion **O**f **I**nterest **C**lassification **a**nd **T**racking á—¢
A simple-to-use Python package for automatically classifying images of cells and tracking them across imaging sessions/planes.
<div>
    <img src="docs/media/tracking_FOV_clusters_rich.gif" alt="tracking_FOV_clusters_rich"  width="400"  align="right" style="margin-left: 20px"/>
</div>

**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 desgined 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.

<br>
<br>

# How to use ROICaT
<div>
    <img src="docs/media/umap_with_labels.png" alt="ROICaT" width="300"  align="right"  style="margin-left: 20px"/>
</div>

### TRACKING: 
- [Online App](https://huggingface.co/spaces/richiehakim/ROICaT_tracking): Good for first time users. Try it out without installing anything.
- [Interactive
  notebook](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/tracking/1_tracking_interactive_notebook.ipynb) (also available in colab) $~$<a target="_blank" href="https://githubtocolab.com/RichieHakim/ROICaT/blob/main/notebooks/tracking/1_tracking_interactive_notebook.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
- [Command line interface script](https://github.com/RichieHakim/ROICaT/blob/main/scripts/run_tracking.sh): 
```shell
roicat --pipeline tracking --path_params /path/to/params.yaml --dir_data /folder/with/data/ --dir_save /folder/save/ --prefix_name_save expName --verbose
```
  
### CLASSIFICATION:
- [Interactive notebook -
  Drawing](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/A1_classify_by_drawingSelection.ipynb). (also available in colab) $~$<a target="_blank" href="https://githubtocolab.com/RichieHakim/ROICaT/blob/main/notebooks/classification/A1_classify_by_drawingSelection.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>: $~~$ Use mouse to draw circles around regions of a UMAP to classify ROIs.
- [Interactive notebook - Simple interactive
  Labeling](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B1a_labeling_interactive.ipynb): $~~$ Images of ROIs are displayed and you use the keyboard to manually label them.
- [Interactive notebook - Interactive labeling with
  drawing](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B1b_labeling_drawingAndInteractive.ipynb): $~~$ Draw circles around regions of a UMAP to subselect ROIs for manual labeling.
- [Interactive notebook - Train
  classifier](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B2_classifier_train_interactive.ipynb)
- [Interactive notebook - Inference with
  classifier](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B3_classifier_inference_interactive.ipynb)

**OTHER:** 
- [Custom data importing
  notebook](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/other/demo_data_importing.ipynb)
- Use the API to integrate ROICaT functions into your own code:
  [Documentation](https://roicat.readthedocs.io/en/latest/roicat.html).
- Run the full tracking pipeline using the CLI or
  `roicat.pipelines.pipeline_tracking` with default parameters generated from
  `roicat.util.get_default_paramaters()` saved as a yaml file.
<!-- - Train a new ROInet model using the provided Jupyter Notebook [TODO: link]. -->


# Installation
ROICaT works on Windows, MacOS, and Linux. If you have any issues during the
installation process, please make a [github
issue](https://github.com/RichieHakim/ROICaT/issues) with the error.

### 0. Requirements
- [Anaconda](https://www.anaconda.com/distribution/) or
  [Miniconda](https://docs.conda.io/en/latest/miniconda.html).
- If using Windows: [Microsoft C++ Build
  Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
- 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]
pip install git+https://github.com/RichieHakim/roiextractors
```
**Note on zsh:** if you are using a zsh terminal, change command to: `pip3
install --user 'roicat[all]'` <br>
**Note on installing GPU support on Windows:** see
[GPU Troubleshooting](https://roicat.readthedocs.io/en/latest/installation.html#gpu-support-issues)
documentation.
<br>
**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.


# 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
- [x] 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
- [x] Make a GUI
- [ ] Add settings to the GUI
- ~~[ ] Make a Docker container~~
- ~~Make colab demo notebook not require user data~~
- [x] 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
#### 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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/RichieHakim/ROICaT",
    "name": "roicat",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.10",
    "maintainer_email": null,
    "keywords": "neuroscience, neuroimaging, machine learning, deep learning",
    "author": "Richard Hakim",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/2c/1e/777c5380c08511a7298272143eeb833cf7ad61bc5410a5fbb55de4ce96d8/roicat-1.5.3.tar.gz",
    "platform": null,
    "description": "# Welcome to ROICaT\n\n<div>\n    <img src=\"docs/media/logo1.png\" alt=\"ROICaT\" width=\"200\"  align=\"right\"  style=\"margin-left: 20px\"/>\n</div>\n\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RichieHakim/ROICaT)\n[![build](https://github.com/RichieHakim/ROICaT/actions/workflows/.github/workflows/build.yml/badge.svg)](https://github.com/RichieHakim/ROICaT/actions/workflows/build.yml) \n[![PyPI version](https://badge.fury.io/py/roicat.svg)](https://badge.fury.io/py/roicat)\n[![Downloads](https://pepy.tech/badge/roicat)](https://pepy.tech/project/roicat)\n[![build](https://github.com/RichieHakim/ROICaT/actions/workflows/.github/workflows/check_huggingface_space.yml/badge.svg)](https://github.com/RichieHakim/ROICaT/actions/workflows/check_huggingface_space.yml)\n\n\n**\ud83c\udf89 CONTRIBUTIONS WELCOME! \ud83c\udf89** \\\nSee the [TODO](#todo) section\n\n- **Documentation: [https://roicat.readthedocs.io/en/latest/](https://roicat.readthedocs.io/en/latest/)**. \n- Overview: [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RichieHakim/ROICaT)\n- Discussion forum: [https://groups.google.com/g/roicat_support](https://groups.google.com/g/roicat_support)\n- Technical support: [Github Issues](https://github.com/RichieHakim/ROICaT/issues)\n\n## **R**egion **O**f **I**nterest **C**lassification **a**nd **T**racking \u15e2\nA simple-to-use Python package for automatically classifying images of cells and tracking them across imaging sessions/planes.\n<div>\n    <img src=\"docs/media/tracking_FOV_clusters_rich.gif\" alt=\"tracking_FOV_clusters_rich\"  width=\"400\"  align=\"right\" style=\"margin-left: 20px\"/>\n</div>\n\n**Why use ROICaT?**\n- **It's easy to use. You don't need to know how to code. You can use the\n  interactive notebooks or online app to run the pipelines with just a few\n  clicks.**\n- It's accurate. ROICaT was desgined to be better than existing tools. It is\n  capable of classifying and tracking neuron ROIs at accuracies approaching\n  human performance out of the box.\n- It's fast and computational requirements are low. You can run it on a laptop.\n  It was designed to be used with >1M ROIs, and can utilize GPUs to speed things\n  up.\n\nWith ROICaT, you can:\n- **Classify ROIs** into different categories (e.g. neurons, dendrites, glia,\n  etc.).\n- **Track ROIs** across imaging sessions/planes (e.g. ROI #1 in session 1 is the\n  same as ROI #7 in session 2).\n\n**What data types can ROICaT process?** \n- ROICaT can accept any imaging data format including: Suite2p, CaImAn, CNMF,\n  NWB, raw/custom ROI data and more. See below for details on how to use any\n  data type with ROICaT.\n\n<br>\n<br>\n\n# How to use ROICaT\n<div>\n    <img src=\"docs/media/umap_with_labels.png\" alt=\"ROICaT\" width=\"300\"  align=\"right\"  style=\"margin-left: 20px\"/>\n</div>\n\n### TRACKING: \n- [Online App](https://huggingface.co/spaces/richiehakim/ROICaT_tracking): Good for first time users. Try it out without installing anything.\n- [Interactive\n  notebook](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/tracking/1_tracking_interactive_notebook.ipynb) (also available in colab) $~$<a target=\"_blank\" href=\"https://githubtocolab.com/RichieHakim/ROICaT/blob/main/notebooks/tracking/1_tracking_interactive_notebook.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n- [Command line interface script](https://github.com/RichieHakim/ROICaT/blob/main/scripts/run_tracking.sh): \n```shell\nroicat --pipeline tracking --path_params /path/to/params.yaml --dir_data /folder/with/data/ --dir_save /folder/save/ --prefix_name_save expName --verbose\n```\n  \n### CLASSIFICATION:\n- [Interactive notebook -\n  Drawing](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/A1_classify_by_drawingSelection.ipynb). (also available in colab) $~$<a target=\"_blank\" href=\"https://githubtocolab.com/RichieHakim/ROICaT/blob/main/notebooks/classification/A1_classify_by_drawingSelection.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>: $~~$ Use mouse to draw circles around regions of a UMAP to classify ROIs.\n- [Interactive notebook - Simple interactive\n  Labeling](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B1a_labeling_interactive.ipynb): $~~$ Images of ROIs are displayed and you use the keyboard to manually label them.\n- [Interactive notebook - Interactive labeling with\n  drawing](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B1b_labeling_drawingAndInteractive.ipynb): $~~$ Draw circles around regions of a UMAP to subselect ROIs for manual labeling.\n- [Interactive notebook - Train\n  classifier](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B2_classifier_train_interactive.ipynb)\n- [Interactive notebook - Inference with\n  classifier](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/classification/B3_classifier_inference_interactive.ipynb)\n\n**OTHER:** \n- [Custom data importing\n  notebook](https://github.com/RichieHakim/ROICaT/blob/main/notebooks/other/demo_data_importing.ipynb)\n- Use the API to integrate ROICaT functions into your own code:\n  [Documentation](https://roicat.readthedocs.io/en/latest/roicat.html).\n- Run the full tracking pipeline using the CLI or\n  `roicat.pipelines.pipeline_tracking` with default parameters generated from\n  `roicat.util.get_default_paramaters()` saved as a yaml file.\n<!-- - Train a new ROInet model using the provided Jupyter Notebook [TODO: link]. -->\n\n\n# Installation\nROICaT works on Windows, MacOS, and Linux. If you have any issues during the\ninstallation process, please make a [github\nissue](https://github.com/RichieHakim/ROICaT/issues) with the error.\n\n### 0. Requirements\n- [Anaconda](https://www.anaconda.com/distribution/) or\n  [Miniconda](https://docs.conda.io/en/latest/miniconda.html).\n- If using Windows: [Microsoft C++ Build\n  Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)\n- The below commands should be run in the terminal (Mac/Linux) or Anaconda\n  Prompt (Windows).\n\n### 1. (Recommended) Create a new conda environment\n```\nconda create -n roicat python=3.12\nconda activate roicat\n```\nYou will need to activate the environment with `conda activate roicat` each time\nyou want to use ROICaT.\n\n### 2. Install ROICaT\n```\npip install roicat[all]\npip install git+https://github.com/RichieHakim/roiextractors\n```\n**Note on zsh:** if you are using a zsh terminal, change command to: `pip3\ninstall --user 'roicat[all]'` <br>\n**Note on installing GPU support on Windows:** see\n[GPU Troubleshooting](https://roicat.readthedocs.io/en/latest/installation.html#gpu-support-issues)\ndocumentation.\n<br>\n**Note on opencv:** The headless version of opencv is installed by default. If\nthe regular version is already installed, you will need to uninstall it first.\n\n### 3. Clone the repo to get the notebooks\n```\ngit clone https://github.com/RichieHakim/ROICaT\n```\nThen, navigate to the `ROICaT/notebooks/jupyter` directory to run the notebooks.\n\n\n# Upgrading versions\nThere are 2 parts to upgrading ROICaT: the **Python package** and the\n**repository files** which contain the notebooks and scripts.\\\nActivate your environment first, then...\\\nTo upgrade the Python package, run:\n```\npip install --upgrade roicat[all]\n```\nTo upgrade the repository files, navigate your terminal to the `ROICaT` folder and run:\n```\ngit pull\n```\n\n\n# General workflow:\n- **Pass ROIs through ROInet:** Images of the ROIs are passed through a neural\n  network which outputs a feature vector for each image describing what the ROI\n  looks like.\n-  **Classification:** The feature vectors can then be used to classify ROIs:\n   - A simple regression-like classifier can be trained using user-supplied\n     labeled data (e.g. an array of images of ROIs and a corresponding array of\n     labels for each ROI).\n   - Alternatively, classification can be done by projecting the feature vectors\n     into a lower-dimensional space using UMAP and then simply circling the\n     region of space to classify the ROIs.\n-  **Tracking**: The feature vectors can be combined with information about the\n   position of the ROIs to track the ROIs across imaging sessions/planes.\n\n\n# Run the app locally\nAlthough, 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:\n```\nsudo docker run -it -p 7860:7860 --platform=linux/amd64 --shm-size=10g registry.hf.space/richiehakim-roicat-tracking:latest streamlit run app.py\n```\n\n\n# TODO:\n#### algorithmic improvements:\n- [ ] Add in method to use more similarity metrics for tracking\n- [ ] Coordinate descent on each similarity metric\n- [ ] Add F and Fneu to data_roicat, dFoF and trace quality metric functions\n- [ ] Add in notebook for demonstrating using temporal similarity metrics (SWT on dFoF)\n- [ ] Make a standard classifier\n- [ ] Try other clustering methods\n- [x] Make image aligner based on image similarity + RANSAC of centroids or s_SF\n- [ ] Better post-hoc curation metrics and visualizations\n- [ ] Discount the non-rigid warp masks towards the edges to be more like the rigid warp map in order improve border performance\n- [ ] Make non-rigid image registration optional\n#### code improvements:\n- [ ] **Finish ROIextractors integration**\n- [ ] Update automatic regression module (make new repo for it)\n- [ ] Switch to ONNX for ROInet\n- [ ] Some more integration tests\n- [ ] Figure out RNG / OS differences issues for tests\n- [ ] Add more documentation / tutorials\n- [x] Make a GUI\n- [ ] Add settings to the GUI\n- ~~[ ] Make a Docker container~~\n- ~~Make colab demo notebook not require user data~~\n- [x] Make a better CLI\n- [ ] Switch to pyproject.toml\n- [ ] Improve params.json / default params system\n- [ ] Spruce up training code\n- [ ] Switch off pickling optuna save file\n- [ ] Try training on cellpose datasets\n#### other:\n- [ ] Write the paper\n- [ ] Make tweet about it\n- [ ] Make a video or two on how to use it\n- [ ] Maybe use lightthetorch for torch installation\n- [ ] Better Readme\n- [ ] More documentation\n- [ ] Make a regression model for in-plane-ness\n- [ ] Formalize bounty program\n",
    "bugtrack_url": null,
    "license": "LICENSE",
    "summary": "A library for classifying and tracking ROIs.",
    "version": "1.5.3",
    "project_urls": {
        "Homepage": "https://github.com/RichieHakim/ROICaT"
    },
    "split_keywords": [
        "neuroscience",
        " neuroimaging",
        " machine learning",
        " deep learning"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "380067513b75b6cffbcd950a46c9064fb5ffd86b2d2ab05c44f26c8f2ac62174",
                "md5": "e982c2da13ba327bf53d631db8246c55",
                "sha256": "3795ffcb4007aff26a1a3a01d78110acd801c59869b2f255ae43527d7305776e"
            },
            "downloads": -1,
            "filename": "roicat-1.5.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e982c2da13ba327bf53d631db8246c55",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.10",
            "size": 217574,
            "upload_time": "2025-07-26T19:02:22",
            "upload_time_iso_8601": "2025-07-26T19:02:22.778565Z",
            "url": "https://files.pythonhosted.org/packages/38/00/67513b75b6cffbcd950a46c9064fb5ffd86b2d2ab05c44f26c8f2ac62174/roicat-1.5.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2c1e777c5380c08511a7298272143eeb833cf7ad61bc5410a5fbb55de4ce96d8",
                "md5": "ccf700a27830a850503f86cbdaf67296",
                "sha256": "dead4c57910b6845737d50c9a1ce4e3199ac806dad2e0377342fbe9679843e6c"
            },
            "downloads": -1,
            "filename": "roicat-1.5.3.tar.gz",
            "has_sig": false,
            "md5_digest": "ccf700a27830a850503f86cbdaf67296",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.10",
            "size": 224470,
            "upload_time": "2025-07-26T19:02:24",
            "upload_time_iso_8601": "2025-07-26T19:02:24.939080Z",
            "url": "https://files.pythonhosted.org/packages/2c/1e/777c5380c08511a7298272143eeb833cf7ad61bc5410a5fbb55de4ce96d8/roicat-1.5.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-26 19:02:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "RichieHakim",
    "github_project": "ROICaT",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "hdbscan",
            "specs": [
                [
                    "==",
                    "0.8.40"
                ]
            ]
        },
        {
            "name": "holoviews",
            "specs": [
                [
                    "==",
                    "1.21.0"
                ]
            ]
        },
        {
            "name": "jupyter",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "kymatio",
            "specs": [
                [
                    "==",
                    "0.3.0"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "==",
                    "3.10.3"
                ]
            ]
        },
        {
            "name": "natsort",
            "specs": [
                [
                    "==",
                    "8.4.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "2.2.6"
                ]
            ]
        },
        {
            "name": "opencv_contrib_python_headless",
            "specs": [
                [
                    "<=",
                    "4.12.0.88"
                ]
            ]
        },
        {
            "name": "optuna",
            "specs": [
                [
                    "==",
                    "4.3.0"
                ]
            ]
        },
        {
            "name": "Pillow",
            "specs": [
                [
                    "==",
                    "11.3.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.4.1"
                ]
            ]
        },
        {
            "name": "scikit_learn",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "==",
                    "1.15.3"
                ]
            ]
        },
        {
            "name": "seaborn",
            "specs": [
                [
                    "==",
                    "0.13.2"
                ]
            ]
        },
        {
            "name": "sparse",
            "specs": [
                [
                    "==",
                    "0.17.0"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    "==",
                    "4.67.1"
                ]
            ]
        },
        {
            "name": "umap_learn",
            "specs": [
                [
                    "==",
                    "0.5.9.post2"
                ]
            ]
        },
        {
            "name": "xxhash",
            "specs": [
                [
                    "==",
                    "3.5.0"
                ]
            ]
        },
        {
            "name": "bokeh",
            "specs": [
                [
                    "==",
                    "3.7.3"
                ]
            ]
        },
        {
            "name": "psutil",
            "specs": [
                [
                    "==",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "py_cpuinfo",
            "specs": [
                [
                    "==",
                    "9.0.0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "6.0.2"
                ]
            ]
        },
        {
            "name": "mat73",
            "specs": [
                [
                    "==",
                    "0.65"
                ]
            ]
        },
        {
            "name": "torch",
            "specs": [
                [
                    "==",
                    "2.7.1"
                ]
            ]
        },
        {
            "name": "torchvision",
            "specs": [
                [
                    "==",
                    "0.22.1"
                ]
            ]
        },
        {
            "name": "torchaudio",
            "specs": [
                [
                    "==",
                    "2.7.1"
                ]
            ]
        },
        {
            "name": "selenium",
            "specs": [
                [
                    "==",
                    "4.34.2"
                ]
            ]
        },
        {
            "name": "skl2onnx",
            "specs": [
                [
                    "==",
                    "1.19.1"
                ]
            ]
        },
        {
            "name": "onnx",
            "specs": [
                [
                    "==",
                    "1.17.0"
                ]
            ]
        },
        {
            "name": "onnxruntime",
            "specs": [
                [
                    "==",
                    "1.22.1"
                ]
            ]
        },
        {
            "name": "jupyter_bokeh",
            "specs": [
                [
                    "==",
                    "4.0.5"
                ]
            ]
        },
        {
            "name": "onnx2torch",
            "specs": [
                [
                    "==",
                    "1.5.15"
                ]
            ]
        },
        {
            "name": "scikit-image",
            "specs": [
                [
                    "==",
                    "0.25.2"
                ]
            ]
        },
        {
            "name": "richfile",
            "specs": [
                [
                    ">=",
                    "0.4.5"
                ]
            ]
        },
        {
            "name": "romatch-roicat",
            "specs": [
                [
                    ">=",
                    "0.1.1"
                ]
            ]
        },
        {
            "name": "kornia",
            "specs": [
                [
                    "==",
                    "0.8.1"
                ]
            ]
        }
    ],
    "lcname": "roicat"
}
        
Elapsed time: 0.53709s