Skip to main content

Modular and extensible neuromuscular simulation framework for generating physiologically grounded motor-unit activity, muscle force, and EMG signals (surface and intramuscular)

Project description

Welcome to MyoGen Logo

The modular and extensible simulation toolkit for neurophysiology

Documentation Python 3.12+ Version

InstallationDocumentationExamplesHow to Cite

Overview

MyoGen is a modular and extensible neuromuscular simulation framework for generating physiologically grounded motor-unit activity, muscle force, and surface EMG signals.

It supports end-to-end modeling of the neuromuscular pathway, from descending neural drive and spinal motor neuron dynamics to muscle activation and bioelectric signal formation at the electrode level. MyoGen is designed for algorithm validation, hypothesis-driven research, and education, providing configurable building blocks that can be independently combined and extended.

Highlights

🧬 Biophysically inspired neuron models — NEURON-based motor neurons with validated calcium dynamics and membrane properties

🎯 Everything is inspectable — Complete access to every motor unit, spike time, fiber location etc. for rigorous algorithm testing

⚡️ Vectorized & parallel — Multi-core CPU processing with NumPy/Numba vectorization for fast computation

🔬 End-to-end simulation — From motor unit recruitment to high-density surface EMG in a single framework

📊 Reproducible science — Deterministic random seeds and standardized Neo Block outputs for exact replication

📦 NWB export — Optional export to Neurodata Without Borders format for data sharing via DANDI

🧰 Comprehensive toolkit — Surface EMG, intramuscular EMG, force generation, and spinal network modeling

Installation

Requires Python 3.12+ — Check your version with python --version

System Requirements

Platform Before Installing MyoGen
Windows NEURON 8.2.7 - Download, run installer, select "Add to PATH"
Linux sudo apt install libopenmpi-dev (Ubuntu/Debian) or sudo dnf install openmpi-devel (Fedora)
macOS brew install open-mpi

[!CAUTION]

Windows Users: Prerequisites

You MUST install the following before installing MyoGen on Windows:

1. Visual C++ Build Tools

Download and install Visual C++ Build Tools.

During installation, select these components:

  • MSVC Build Tools for x64/x86 (Latest)
  • MSVC v143 – VS 2022 C++ x64/x86 build tools
  • Windows 11 SDK (latest)
  • C++ core desktop features

2. NEURON Simulator

  1. Download: NEURON 8.2.7 Installer
  2. Run the installer and select "Add to PATH" when prompted
  3. Restart your terminal (close and reopen)
  4. Then continue with the installation below

Step 1: Install uv (Package Manager)

We use uv - a fast Python package manager. Install it first:

Windows (open PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Linux/macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh

After installing, restart your terminal (close and reopen it).


Step 2: Create a New Project

Open a terminal and navigate to where you want your project:

# Create a new folder for your project
mkdir my_emg_project
cd my_emg_project

# Initialize a Python project
uv init

# Add MyoGen to your project
uv add myogen

That's it! MyoGen is now installed and ready to use.


Step 3: Verify Installation

Create a test file to make sure everything works:

# Create a test script
uv run python -c "from myogen import simulator; print('MyoGen installed successfully!')"

If you see MyoGen installed successfully! - you're all set!


Alternative: pip install

If you prefer pip over uv:

pip install myogen

For Developers (From Source)

git clone https://github.com/NsquaredLab/MyoGen.git
cd MyoGen
uv sync
uv run poe setup_myogen

Optional: GPU Acceleration

For 5-10× faster convolutions (requires NVIDIA GPU):

uv add cupy-cuda12x

Documentation

📖 Read the full documentation

  • User Guide — Working with simulation outputs
  • API Reference — Complete class documentation
  • Examples — Step-by-step tutorials from recruitment to EMG

How to Cite

If you use MyoGen in your research, please cite:

@article{simpetru_molinari_2026_myogen,
  title   = {MyoGen: Unified Biophysical Modeling of Human Neuromotor Activity and Resulting Signals},
  author  = {S{\^i}mpetru, Raul C. and Molinari, Ricardo G. and Rohlf, Devon R. and
             Batichotti, Rebeka L. and Watanabe, Renato N. and
             Elias, Leonardo A. and Del Vecchio, Alessandro},
  journal = {bioRxiv},
  note    = {preprint},
  year    = {2026},
  doi     = {10.64898/2026.01.01.697284},
  url     = {https://www.biorxiv.org/content/10.64898/2026.01.01.697284}
}

Contributing

Contributions welcome! See issues if you want to add a feature or fix a bug.

Contributors

MyoGen is authored by Raul C. Sîmpetru and Ricardo G. Molinari. It is a joint project of the Nsquared Lab (Neuromuscular Physiology and Neural Interfacing Laboratory) at FAU Erlangen-Nürnberg, the NER Lab (Neural Engineering Research Laboratory) at the University of Campinas, and the BMClab (Biomechanics and Motor Control Laboratory) at the Federal University of ABC.

Thanks goes to these wonderful people (emoji key):

All Contributors

Raul C. Sîmpetru
Raul C. Sîmpetru

💻 🤔 🚧 📆 🔬
Ricardo G. Molinari
Ricardo G. Molinari

🤔 🚧 🔬
Devon R. Rohlf
Devon R. Rohlf

💻 🚧 🔬
Renato N. Watanabe
Renato N. Watanabe

💻 🤔 🧑‍🏫 🔬
Alessandro Del Vecchio
Alessandro Del Vecchio

🤔 🧑‍🏫 🔬
Leonardo A. Elias
Leonardo A. Elias

🤔 🧑‍🏫 🔬
João Bittar
João Bittar

🐛 🤔
BraveUnicorn
BraveUnicorn

💻
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MyoGen is AGPL licensed. See LICENSE for details.

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

myogen-0.11.0.tar.gz (4.2 MB view details)

Uploaded Source

Built Distributions

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

myogen-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

myogen-0.11.0-cp313-cp313-macosx_11_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

myogen-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

myogen-0.11.0-cp312-cp312-macosx_11_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file myogen-0.11.0.tar.gz.

File metadata

  • Download URL: myogen-0.11.0.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for myogen-0.11.0.tar.gz
Algorithm Hash digest
SHA256 d0570f49586daa41cc8eeca4d404e2e742f2d42efc84643fb355e58b2570a125
MD5 807c62e9426cfe89a60b5cdd875bd011
BLAKE2b-256 8d46c2b9fc336de95d16a84bc839789c345e1a1539c3e8e4ee2afc5cb222fe71

See more details on using hashes here.

Provenance

The following attestation bundles were made for myogen-0.11.0.tar.gz:

Publisher: build-wheels.yml on NsquaredLab/MyoGen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file myogen-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for myogen-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5ce5d45ebc424a9f75754f7d9a7dd599fdfed92bf270cd2b51dd974367398e6
MD5 50abbd37d3e93947de97bcc95b28f72a
BLAKE2b-256 337a4b8a5942172edeffc8f1e7e947f4034dec96b81a7a74c4529cd0fcadc43c

See more details on using hashes here.

Provenance

The following attestation bundles were made for myogen-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on NsquaredLab/MyoGen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file myogen-0.11.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for myogen-0.11.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 097931b77493f2917ed939598d9b8af0dc66c2ebb5458d22f80bc89d65178b76
MD5 0efa4145a4674de14ffca5db82f042e9
BLAKE2b-256 77d4f419c0828531671a3c687f6dca940a42c0a4bc6cf4216780d96d70379e18

See more details on using hashes here.

Provenance

The following attestation bundles were made for myogen-0.11.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on NsquaredLab/MyoGen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file myogen-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for myogen-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 01f01c4fbe8de227cbc3590e193dac27152376f1f887deb46b95174fc6ab6bb9
MD5 8af5e5fe401b595a1fa76fcdb4d6241a
BLAKE2b-256 bbb180b588d55fd3d34129583a38a3fdc1fbcb667418665ca4c46f39b9844ffc

See more details on using hashes here.

Provenance

The following attestation bundles were made for myogen-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on NsquaredLab/MyoGen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file myogen-0.11.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for myogen-0.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2d539c62e30b4fe204f49acdf4e6efd34b217149a1e74941b4c58c3a87cbac5
MD5 b3e723d2de8b5f323debcef6e033b04e
BLAKE2b-256 bc381edea77b300b708fc8ee202a17dac83291e211e145b063a3dcc1c2d30ea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for myogen-0.11.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on NsquaredLab/MyoGen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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