rataGUI


NamerataGUI JSON
Version 0.2.1 PyPI version JSON
download
home_page
SummaryCustomizable and intuitive video acquisition system for real-time animal tracking and behavior quantification
upload_time2023-11-03 22:29:00
maintainer
docs_urlNone
author
requires_python>=3.10
licenseLICENSE
keywords tracking pose estimation video neuroscience deep learning
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RataGUI

[![Downloads](https://static.pepy.tech/badge/ratagui)](https://pepy.tech/project/ratagui) 
[![Downloads](https://static.pepy.tech/badge/ratagui/month)](https://pepy.tech/project/ratagui)
[![PyPI version](https://badge.fury.io/py/rataGUI.svg)](https://badge.fury.io/py/rataGUI)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Generic badge](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](CONTRIBUTING.md)

<div align="center">
<p align="center">
<img src="docs/images/banner.png" width="95%">
</p>
</div>

RataGUI is a **customizable** and **user-friendly** Python framework for real-time animal tracking and behavioral control. At a high level, it connects video streams from cameras to online processing pipelines that can trigger external devices in real-time, enabling experiments with low latency, closed-loop feedback. 


# Features
RataGUI was developed with four primary design principles:

* **Accessibility** - RataGUI features an adaptive and intuitive graphical user interface (GUI) that makes it easier to conduct complex experiments involving heterogenous hardware without any additional programming. Using minimal dependencies and efficient multi-threaded processing, RataGUI is designed to run on a wide variety of different systems.

* **Modularity** - RataGUI's plug-and-play architecture enables easy customization of data processing pipelines to support your experiment's specific needs. Cameras, plugins and triggers are separated into individual modules (see tables below) and configured together in a single unified interface.

* **Extensitibility** - RataGUI's modular framework allows for seamless integration of user-created modules for additional functionality. You are encouraged to fork the repository and write additional modules using the provided instructions and template code. RataGUI aims to provide a platform for researchers to share code and contribute to the growing list of modules below.

* **Reproducibility** - RataGUI automatically logs all relevant experimental info and saves its state in a restorable, human-readable JSON format. This allows RataGUI to replicate an experiment's parameters from a single session directory. 


## Available Camera Modules
| Name | Description | Contributor |
| -------- | -------- | -------- |
| BaslerCamera | Basler camera integration using pypylon (see installation guide) | [BrainHu42](https://github.com/BrainHu42) |
| FLIRCamera  | Spinnaker camera integration using PySpin (see installation guide) | [BrainHu42](https://github.com/BrainHu42) |
| VideoReader | Reads video files for offline processing  | [BrainHu42](https://github.com/BrainHu42) |
| WebCamera | OpenCV integration for web cameras or network cameras | [BrainHu42](https://github.com/BrainHu42) |


## Available Plugin Modules
| Name | Description | Contributor |
| -------- | -------- | -------- |
| DLCInference | Estimates animal poses using exported DeepLabCut model and writes keypoints as metadata | [BrainHu42](https://github.com/BrainHu42) |
| FrameDisplay  | Displays video stream in a separate window | [BrainHu42](https://github.com/BrainHu42) |
| MetadataWriter | Overlays metadata onto frames and/or into a log file | [BrainHu42](https://github.com/BrainHu42) |
| SleapInference | Estimates animal poses using exported SLEAP model and writes keypoints as metadata | [BrainHu42](https://github.com/BrainHu42) |
| VideoWriter | Writes frames to video file using FFMPEG | [BrainHu42](https://github.com/BrainHu42) |

## Available Trigger Modules
| Name | Description | Contributor |
| -------- | -------- | -------- |
| NIDAQmxCounter | Writes tasks to National Instrument counter cards through the NI-DAQmx driver | [BrainHu42](https://github.com/BrainHu42) |
| UDPSocket  | Publishes information to a network socket using UDP protocol | [BrainHu42](https://github.com/BrainHu42) |


# [Installation Guide](docs/install-guide.md)

## Quick Start
```
conda create -n rataGUI ffmpeg pip python=3.10 cudnn=8.2 cudatoolkit=11.3 nvidia::cuda-nvcc=11.3
conda activate rataGUI
python -m pip install rataGUI
```
<!-- # Documentation

Note: A "session" is a recording session. Every time you press start, it starts a new recording session and saves a snapshot of RataGUI's state.

## Video Demo -->


# Customization Guide

RataGUI's modular framework was built for user customizability and integration. We encourage you to fork the package repository from Github and add additional modules for your specific use case. 
```
git clone https://github.com/BrainHu42/rataGUI.git
```

## Implement Custom Camera Models
To add another camera model, simply rename and edit the required functions provided in `cameras/TemplateCamera.py` to fit your camera model's specifications. RataGUI will use these functions to find, initialize, read frames from and close the camera. Any configurable camera settings should be specified in the dictionary named `DEFAULT_PROPS`. RataGUI will use these default settings to automatically create a dynamic menu and add it to the user interface. The configured settings will be passed into the `initializeCamera` function.

## Implement Custom Plugins
To incorporate additional functionality, simply rename and edit the required functions provided in `plugins/template_plugin.py` with the custom processing needed for your use case. RataGUI will use these functions to attach your plugin to an active camera widget's processing pipeline. Any configurable plugin settings should be specified in the dictionary named `DEFAULT_CONFIG`. RataGUI will use these default settings to automatically create a dynamic menu and add it to the user interface. 

## Implement Custom Triggers
To interface with other external devices, simply rename and edit the required functions provided in `triggers/template_trigger.py` to fit your custom use case. RataGUI will use these functions to populate the trigger tab in the user interface with all available devices and their configurable settings. Trigger devices can be controlled through the interface as well as within a plugin process. 

## Contributing
If you think your module would be useful to other people, please consider submitting a merge request so that we can review and integrate your code into the main branch. We'll also add you to the list of module contributors!

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "rataGUI",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "tracking,pose estimation,video,neuroscience,deep learning",
    "author": "",
    "author_email": "Brian Hu <brainhu42@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/64/b8/1ae5770dae890c3237513c0457a683f0ad5057e2b935f4ee6e098c33982d/rataGUI-0.2.1.tar.gz",
    "platform": null,
    "description": "# RataGUI\r\n\r\n[![Downloads](https://static.pepy.tech/badge/ratagui)](https://pepy.tech/project/ratagui) \r\n[![Downloads](https://static.pepy.tech/badge/ratagui/month)](https://pepy.tech/project/ratagui)\r\n[![PyPI version](https://badge.fury.io/py/rataGUI.svg)](https://badge.fury.io/py/rataGUI)\r\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\r\n[![Generic badge](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](CONTRIBUTING.md)\r\n\r\n<div align=\"center\">\r\n<p align=\"center\">\r\n<img src=\"docs/images/banner.png\" width=\"95%\">\r\n</p>\r\n</div>\r\n\r\nRataGUI is a **customizable** and **user-friendly** Python framework for real-time animal tracking and behavioral control. At a high level, it connects video streams from cameras to online processing pipelines that can trigger external devices in real-time, enabling experiments with low latency, closed-loop feedback. \r\n\r\n\r\n# Features\r\nRataGUI was developed with four primary design principles:\r\n\r\n* **Accessibility** - RataGUI features an adaptive and intuitive graphical user interface (GUI) that makes it easier to conduct complex experiments involving heterogenous hardware without any additional programming. Using minimal dependencies and efficient multi-threaded processing, RataGUI is designed to run on a wide variety of different systems.\r\n\r\n* **Modularity** - RataGUI's plug-and-play architecture enables easy customization of data processing pipelines to support your experiment's specific needs. Cameras, plugins and triggers are separated into individual modules (see tables below) and configured together in a single unified interface.\r\n\r\n* **Extensitibility** - RataGUI's modular framework allows for seamless integration of user-created modules for additional functionality. You are encouraged to fork the repository and write additional modules using the provided instructions and template code. RataGUI aims to provide a platform for researchers to share code and contribute to the growing list of modules below.\r\n\r\n* **Reproducibility** - RataGUI automatically logs all relevant experimental info and saves its state in a restorable, human-readable JSON format. This allows RataGUI to replicate an experiment's parameters from a single session directory. \r\n\r\n\r\n## Available Camera Modules\r\n| Name | Description | Contributor |\r\n| -------- | -------- | -------- |\r\n| BaslerCamera | Basler camera integration using pypylon (see installation guide) | [BrainHu42](https://github.com/BrainHu42) |\r\n| FLIRCamera  | Spinnaker camera integration using PySpin (see installation guide) | [BrainHu42](https://github.com/BrainHu42) |\r\n| VideoReader | Reads video files for offline processing  | [BrainHu42](https://github.com/BrainHu42) |\r\n| WebCamera | OpenCV integration for web cameras or network cameras | [BrainHu42](https://github.com/BrainHu42) |\r\n\r\n\r\n## Available Plugin Modules\r\n| Name | Description | Contributor |\r\n| -------- | -------- | -------- |\r\n| DLCInference | Estimates animal poses using exported DeepLabCut model and writes keypoints as metadata | [BrainHu42](https://github.com/BrainHu42) |\r\n| FrameDisplay  | Displays video stream in a separate window | [BrainHu42](https://github.com/BrainHu42) |\r\n| MetadataWriter | Overlays metadata onto frames and/or into a log file | [BrainHu42](https://github.com/BrainHu42) |\r\n| SleapInference | Estimates animal poses using exported SLEAP model and writes keypoints as metadata | [BrainHu42](https://github.com/BrainHu42) |\r\n| VideoWriter | Writes frames to video file using FFMPEG | [BrainHu42](https://github.com/BrainHu42) |\r\n\r\n## Available Trigger Modules\r\n| Name | Description | Contributor |\r\n| -------- | -------- | -------- |\r\n| NIDAQmxCounter | Writes tasks to National Instrument counter cards through the NI-DAQmx driver | [BrainHu42](https://github.com/BrainHu42) |\r\n| UDPSocket  | Publishes information to a network socket using UDP protocol | [BrainHu42](https://github.com/BrainHu42) |\r\n\r\n\r\n# [Installation Guide](docs/install-guide.md)\r\n\r\n## Quick Start\r\n```\r\nconda create -n rataGUI ffmpeg pip python=3.10 cudnn=8.2 cudatoolkit=11.3 nvidia::cuda-nvcc=11.3\r\nconda activate rataGUI\r\npython -m pip install rataGUI\r\n```\r\n<!-- # Documentation\r\n\r\nNote: A \"session\" is a recording session. Every time you press start, it starts a new recording session and saves a snapshot of RataGUI's state.\r\n\r\n## Video Demo -->\r\n\r\n\r\n# Customization Guide\r\n\r\nRataGUI's modular framework was built for user customizability and integration. We encourage you to fork the package repository from Github and add additional modules for your specific use case. \r\n```\r\ngit clone https://github.com/BrainHu42/rataGUI.git\r\n```\r\n\r\n## Implement Custom Camera Models\r\nTo add another camera model, simply rename and edit the required functions provided in `cameras/TemplateCamera.py` to fit your camera model's specifications. RataGUI will use these functions to find, initialize, read frames from and close the camera. Any configurable camera settings should be specified in the dictionary named `DEFAULT_PROPS`. RataGUI will use these default settings to automatically create a dynamic menu and add it to the user interface. The configured settings will be passed into the `initializeCamera` function.\r\n\r\n## Implement Custom Plugins\r\nTo incorporate additional functionality, simply rename and edit the required functions provided in `plugins/template_plugin.py` with the custom processing needed for your use case. RataGUI will use these functions to attach your plugin to an active camera widget's processing pipeline. Any configurable plugin settings should be specified in the dictionary named `DEFAULT_CONFIG`. RataGUI will use these default settings to automatically create a dynamic menu and add it to the user interface. \r\n\r\n## Implement Custom Triggers\r\nTo interface with other external devices, simply rename and edit the required functions provided in `triggers/template_trigger.py` to fit your custom use case. RataGUI will use these functions to populate the trigger tab in the user interface with all available devices and their configurable settings. Trigger devices can be controlled through the interface as well as within a plugin process. \r\n\r\n## Contributing\r\nIf you think your module would be useful to other people, please consider submitting a merge request so that we can review and integrate your code into the main branch. We'll also add you to the list of module contributors!\r\n",
    "bugtrack_url": null,
    "license": "LICENSE",
    "summary": "Customizable and intuitive video acquisition system for real-time animal tracking and behavior quantification",
    "version": "0.2.1",
    "project_urls": {
        "Homepage": "https://github.com/BrainHu42/rataGUI"
    },
    "split_keywords": [
        "tracking",
        "pose estimation",
        "video",
        "neuroscience",
        "deep learning"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "35a7efa8e56e89c3977f95c3ff67feef2180e6d7c91226aa508eb39684ee93ac",
                "md5": "04e342f0b57c972206d81ccc03bc7125",
                "sha256": "7e75f38d7059d41b00fac0e48c40718a41f04f2453da68824cf70dd2734ca21f"
            },
            "downloads": -1,
            "filename": "rataGUI-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "04e342f0b57c972206d81ccc03bc7125",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 527168,
            "upload_time": "2023-11-03T22:28:59",
            "upload_time_iso_8601": "2023-11-03T22:28:59.271977Z",
            "url": "https://files.pythonhosted.org/packages/35/a7/efa8e56e89c3977f95c3ff67feef2180e6d7c91226aa508eb39684ee93ac/rataGUI-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "64b81ae5770dae890c3237513c0457a683f0ad5057e2b935f4ee6e098c33982d",
                "md5": "a91b0b45f9a408c4eac67bed5ff35c13",
                "sha256": "6b28cf5063eab46a162b7e55bf4634528cb2531fe5a3e521fd4c7bbda40ea8f6"
            },
            "downloads": -1,
            "filename": "rataGUI-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "a91b0b45f9a408c4eac67bed5ff35c13",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 748139,
            "upload_time": "2023-11-03T22:29:00",
            "upload_time_iso_8601": "2023-11-03T22:29:00.939444Z",
            "url": "https://files.pythonhosted.org/packages/64/b8/1ae5770dae890c3237513c0457a683f0ad5057e2b935f4ee6e098c33982d/rataGUI-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-03 22:29:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "BrainHu42",
    "github_project": "rataGUI",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "ratagui"
}
        
Elapsed time: 0.13268s