Skip to main content

Real & Artificial Intelligence for Neuroscience – Simple Tracker for Object Recognition Memory

Project description

🌧️ RAINSTORM 🌧️

Real & Artificial Intelligence for Neuroscience – Simple Tracker for Object Recognition Memory

A complete toolkit for analyzing rodent exploratory behavior in object recognition tasks.

RAINSTORM Logo

RAINSTORM is a comprehensive Python toolkit for analyzing rodent exploratory behavior 🐭. Transform pose-estimation data (e.g., from DeepLabCut or SLEAP) into meaningful behavioral insights through an intuitive workflow that spans from manual annotation to AI-powered automation.


Table of Contents 📋


Features ✨

  • 🎯 Frame-by-Frame Behavioral Labeling: A versatile tool for precise manual annotation, it generates training data for your AI models.
  • 🔧 Pre & Post-DLC Data Processing: Align video points, clean tracking glitches, and interpolate data for smooth and reliable analysis.
  • 📐 Geometric Analysis: Automatically identify object exploration using distance and angle metrics.
  • 🧊 Immobility Detection: Label freezing behavior based on motion, a key indicator in memory studies.
  • ⚙️ AI-Powered Automatic Labeling: Train and deploy neural networks (including LSTMs) to automatically detect complex exploration patterns.
  • 📊 Visual Label Comparison: Easily compare manual, geometric, and AI-generated labels with intuitive visualizations.

Installation 💾

Prerequisites

First, ensure you have the following software installed on your system.

[!TIP] First Time Setup: During Miniconda installation, select "Add Conda to PATH" for easier terminal access. Restart your computer after installation to ensure all components are properly configured.

Setup Steps

  1. Clone the Repository

    Open a terminal (or Miniconda Prompt) and run the following command.

    git clone https://github.com/sdhers/rainstorm.git
    

    This will create a rainstorm folder in your current directory.

  2. Set Up the Conda Environment

    Navigate into the cloned directory and create the dedicated environment from the provided file:

    cd rainstorm
    conda env create -f rainstorm_venv.yml
    

    Once the environment is ready, you can activate it by running conda activate rainstorm.

  3. Launch VS Code & Select Kernel

    Launch VS Code from the terminal:

    code .
    

    In VS Code, ensure the Python extension is installed:

    • Go to the Extensions view (Ctrl+Shift+X or Cmd+Shift+X on macOS).
    • Search for "Python" and install the official extension from Microsoft.

    Open a Jupyter notebook (e.g., 2a-Prepare_positions.ipynb).

    • When prompted to select a kernel, choose the rainstorm Conda environment from the list of Python Environments.

You are all set! You can now run the notebooks to explore the RAINSTORM workflow.


Usage 💻

RAINSTORM provides a comprehensive workflow through 7 interactive Jupyter notebooks, plus standalone GUI tools for video processing and behavioral labeling.

Transform your data from raw videos to publication-ready results through our intuitive 7-step workflow:

Step Notebook Purpose Output
0 0-Video_handling.ipynb 🎥 Prepare videos Trimmed, cropped, aligned videos
1 1-Behavioral_labeler.ipynb ✍️ Manual annotation Frame-by-frame behavioral labels
2a 2a-Prepare_positions.ipynb 🧹 Clean tracking data Filtered, smoothed position files
2b 2b-Geometric_analysis.ipynb 📐 Geometric detection Rule-based behavioral labels
3a 3a-Create_models.ipynb 🤖 Train AI models Custom neural networks
3b 3b-Automatic_analysis.ipynb 🧠 AI-powered labeling Automated behavioral detection
4 4-Seize_labels.ipynb 📊 Results & visualization Personalized plots & analyses

Video Handling 🎥

We offer a quick and easy way to prepare videos for pose estimation and behavioral analysis.

Open the file 0-Video_handling.ipynb

  1. Run the Video Handling app This app allows you to:
    • Trim the video to the desired length.
    • Crop the video to the desired size.
    • Align videos based on two manually selected points (very useful when batch processing videos with ROIs).
  2. Run the Draw ROIs app This app allows you to:
    • Draw ROIs and points on the video.
    • Select a distance for scaling.

[!TIP] Running DLC on Colab: Use our DeepLabCut pretrained model on Google Colab to process your aligned videos:

  1. Copy this Google Drive Folder in your own Google Drive.
  2. Add your own data to the "videos" folder.
  3. Open the Colab file and follow the instructions to run the model on your data.

RAINSTORM Behavioral Labeler ✍️

For precise, frame-by-frame annotation, use the RAINSTORM Behavioral Labeler.

Open and run the file 1-Behavioral_labeler.ipynb

  1. Select the video you want to label.

  2. (Optional) Load a previous labeling .csv file.

    • This allows you to pick up where you left off.
  3. Select the behaviors to label and their keys.

    • Enter the behaviors you want to score (e.g., exp_1, exp_2, freezing, grooming, etc...).

[!WARNING] Keys should be unique, single characters, and different from the fixed control keys: (Quit: q, Zoom In: +, Zoom Out: -, Timeline toogle: t)

  1. Start Labeling! After pressing 'Start Labeling', the video will load, and you can begin annotating frame by frame using the keys you defined.

The RAINSTORM Pipeline 🔬

2a-Prepare_positions.ipynb

🧹 Process and clean bodypart position data.

  • Filters out frames with low tracking likelihood from DeepLabCut.
  • Interpolates and smooths data to correct glitches.
  • Output: Clean .csv files ready for analysis.

1-Prepare_positions


2b-Geometric_analysis.ipynb

📐 Perform geometric labeling of exploration and freezing.

  • Applies a simple geometric rule for exploration:
    • Distance to object < 2.5 cm
    • Angle towards object < 45°
  • Identifies freezing behavior based on lack of movement.

2-Geometric_analysis


3a-Create_Models.ipynb

⚙️ Train AI models for automatic behavioral labeling.

  • Uses your manually labeled data to train TensorFlow models. 4-Evaluate_models_b
  • Includes an LSTM network (a wide model) that considers temporal sequences for higher accuracy. 3-Create_Models
  • Evaluates model performance against human labelers using Principal Components Analysis (PCA). 4-Evaluate_models_a

3b-Automatic_analysis.ipynb

🧠 Automate labeling with your trained AI model.

  • Applies your best-performing model to label unseen datasets.
  • Generates comparative visualizations (like polar graphs) to contrast manual, geometric, and AI-driven labels.

6-Compare_Labels


4-Seize_Labels.ipynb

📊 Extract, summarize, and visualize your final data.

  • Calculates key metrics like Discrimination Index.
  • Generates publication-ready plots to compare behavior across different experimental groups and sessions.

7-Seize_Labels_ts


Citation 📜

If you use RAINSTORM in your research, please cite our work:

D'hers, S., et al. (2025). RAINSTORM: Automated Analysis of Mouse Exploratory Behavior using Artificial Neural Networks. Current Protocols. https://doi.org/10.1002/cpz1.70171

All video recordings were obtained within the Molecular Neurobiology Lab at IFIBYNE (UBA - CONICET).


Contributing 🤝

We welcome contributions from the community! Here's how you can help:

🐛 Report Issues

  • Found a bug? Open an issue
  • Include your Python version, OS, and a minimal example

💡 Suggest Features

🔧 Submit Code

  • Fork the repository and create a feature branch
  • Follow our coding standards and add tests
  • Submit a pull request with a clear description

📚 Improve Documentation

  • Fix typos, clarify instructions, add examples
  • Documentation improvements are always appreciated!

Contact 📫

For research collaborations and academic inquiries:

  • Email: sdhers@fbmc.fcen.uba.ar
  • Institution: Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires

🌟 Stay Updated

  • Star this repository to stay notified of updates
  • 👀 Watch for new releases and features
  • 🐦 Follow development progress and announcements

Thanks for exploring RAINSTORM!

mouse_exploring


Project details


Download files

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

Source Distribution

rainstorm-1.0.12.tar.gz (220.2 kB view details)

Uploaded Source

Built Distribution

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

rainstorm-1.0.12-py3-none-any.whl (267.1 kB view details)

Uploaded Python 3

File details

Details for the file rainstorm-1.0.12.tar.gz.

File metadata

  • Download URL: rainstorm-1.0.12.tar.gz
  • Upload date:
  • Size: 220.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for rainstorm-1.0.12.tar.gz
Algorithm Hash digest
SHA256 83cf7224b953e469d8051e2c6bc6e9ad59436253d5663bc4f332c561d612f016
MD5 327a8f1a982ac3902b8c0269f390086b
BLAKE2b-256 c3bec886ce678695dc0cc04f1176c299868ec9c5d271298f1d13f8fc73031c17

See more details on using hashes here.

File details

Details for the file rainstorm-1.0.12-py3-none-any.whl.

File metadata

  • Download URL: rainstorm-1.0.12-py3-none-any.whl
  • Upload date:
  • Size: 267.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for rainstorm-1.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 abf4708b598839cd414ac859f116c906451674cc2a7b618dff89dd28bb37d1e4
MD5 bd6ff75fa30f368dedd8f74a26ec8654
BLAKE2b-256 7fbf6919728d43c0923ab5b639d44d331547eec307f146ecc0ac4a945fd3e5b1

See more details on using hashes here.

Supported by

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