Skip to content

dfarinagroup/muniverse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MUniverse: Benchmarking Motor Unit Decomposition Algorithms

License: GPL v3 Python 3.11+

MUniverse is a modular framework for simulated and experimental EMG dataset generation, motor unit decomposition algorithm benchmarking, and performance evaluation. It integrates biomechanical simulation (via NeuroMotion), generative models (BioMime), standardized formats (e.g. BIDS/Croissant), and FAIR data hosting (Harvard Dataverse).

MUniverse overview

Features

  • πŸ”¬ Algorithm Benchmarking: Compare multiple motor unit decomposition algorithms (CBSS, SCD, Upperbound, AE)
  • πŸ“Š Dataset Generation: Generate simulated EMG datasets using NeuroMotion and experimental datasets
  • πŸ“ FAIR Data: Access datasets through Harvard Dataverse with BIDS and Croissant format support
  • πŸ”§ Containerized Workflows: Docker and Singularity support for reproducible algorithm execution
  • πŸ“ˆ Performance Evaluation: Comprehensive evaluation metrics and report card generation
  • πŸ““ Tutorial Notebooks: Interactive Jupyter notebooks for dataset loading and algorithm usage

Installation

Requirements

  • Python 3.11 or higher
  • pip

Package Installation

MUniverse is distributed as a Python package. To set up the development environment:

  1. Clone the repository:
git clone https://github.com/dfarinagroup/muniverse.git
cd muniverse
  1. Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. Install the package:
# Install core dependencies
pip install -e .

# Install development dependencies (optional)
pip install -e ".[dev]"

Docker/Singularity Containers

For algorithm execution, Docker or Singularity containers are available. See the docker/ directory for container definitions.

Quick Start

Loading a Dataset

from muniverse.datasets import load_dataset

# Load a dataset from Harvard Dataverse
dataset = load_dataset("neuromotion-test", output_dir="./data")

Running Decomposition

from muniverse.algorithms import decompose_recording

# Run decomposition using CBSS algorithm
results, metadata = decompose_recording(
    data="path/to/emg_data.edf",
    method="cbss"
)

# Or use SCD algorithm (requires container)
results, metadata = decompose_recording(
    data="path/to/emg_data.edf",
    method="scd",
    container="path/to/muniverse_scd.sif",
    engine="singularity"
)

Available Datasets

All datasets are hosted on Harvard Dataverse and follow FAIR principles:

Supported Algorithms

  • CBSS - Convolutional Blind Source Separation
  • SCD - Swarm Contrastive Decomposition (GitHub)
  • Upperbound - Upper bound performance estimation
  • AE - Autoencoder-based decomposition

Documentation (coming soon 🚧)

Project Structure

muniverse/
β”œβ”€β”€ src/                    # Package source code
β”‚   └── muniverse/
β”‚       β”œβ”€β”€ datasets/       # Dataset loading utilities
β”‚       β”œβ”€β”€ algorithms/     # Decomposition algorithms
β”‚       β”œβ”€β”€ data_generation/# Data generation utilities
β”‚       β”œβ”€β”€ evaluation/     # Performance evaluation
β”‚       └── utils/          # Utility functions
β”œβ”€β”€ notebooks/              # Tutorial notebooks
β”œβ”€β”€ scripts/                # Utility scripts
β”œβ”€β”€ configs/                # Algorithm and dataset configurations
β”œβ”€β”€ docker/                 # Docker container definitions
β”œβ”€β”€ docs/                   # GitHub Pages documentation
β”œβ”€β”€ tests/                  # Unit tests
β”œβ”€β”€ pyproject.toml          # Package configuration
└── README.md               

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Acknowledgments

  • NeuroMotion - Biomechanical simulation framework (GitHub)
  • Swarm-Contrastive-Decomposition - Decomposition algorithm (GitHub)
  • Harvard Dataverse - FAIR data hosting platform
  • BIDS - Brain Imaging Data Structure standard
  • Croissant - ML dataset metadata format

Citation

If you use MUniverse in your research, please cite:

@inproceedings{
mamidanna2025muniverse,
title={{MU}niverse: A Simulation and Benchmarking Suite for Motor Unit Decomposition},
author={Pranav Mamidanna and Thomas Klotz and Dimitrios Halatsis and Agnese Grison and Irene Mendez Guerra and Shihan Ma and Arnault H. Caillet and Simon Avrillon and Robin Rohl{\'e}n and Dario Farina},
booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
year={2025},
url={https://openreview.net/forum?id=Slrp3l7aYo}
}

Contact

For questions, issues, or contributions, please:

  • Open an issue on GitHub
  • Contact the maintainers via email (see pyproject.toml for author emails)

License

MUniverse is licensed under the GNU General Public License v3.0 (GPL-3.0).

Important Licensing Notes:

  • This project uses NeuroMotion, which is licensed under GNU GPL v3.0. As a result, MUniverse is also licensed under GNU GPL v3.0 to comply with the copyleft requirements of the GPL license.
  • This project also integrates with Swarm-Contrastive-Decomposition, which is licensed under Creative Commons Attribution-NonCommercial 4.0 International Public License.

See the LICENSE file for full details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •