Skip to content

Repository files navigation

🌧️ 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:

Read the paper! πŸ“œ -> 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


About

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

Resources

Stars

8 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages