# Welcome to ROICaT
<div>
<img src="docs/media/logo1.png" alt="ROICaT" width="200" align="right" style="margin-left: 20px"/>
</div>
[](https://deepwiki.com/RichieHakim/ROICaT)
[](https://github.com/RichieHakim/ROICaT/actions/workflows/build.yml)
[](https://badge.fury.io/py/roicat)
[](https://pepy.tech/project/roicat)
[](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: [](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[](https://deepwiki.com/RichieHakim/ROICaT)\n[](https://github.com/RichieHakim/ROICaT/actions/workflows/build.yml) \n[](https://badge.fury.io/py/roicat)\n[](https://pepy.tech/project/roicat)\n[](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: [](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"
}