EMGFlow 
A Python package for preprocessing and feature extraction of surface electromyography (sEMG) signals.
EMGFlow streamlines end-to-end sEMG analysis for research and clinical workflows. It is designed for batch processing of large datasets typical in machine learning, extracting a comprehensive set of 33 time- and frequency-domain features. The package uses Pandas DataFrames throughout for interoperability and supports flexible file selection with regular expressions. An interactive dashboard visualises signals at each preprocessing stage to aid decisions.
EMGFlow includes a Shiny dashboard for visualising preprocessing effects. Pipeline steps can be overlaid or shown individually, and files are selected from a drop-down menu. A checkbox toggles between a time-domain amplitude view and a spectral view:
Statement Of Need
Although several packages process physiological and neurological signals, support for sEMG has remained limited. Many lack a comprehensive feature set for sEMG, forcing researchers to use a patchwork of tools. Others focus on event detection with GUI-centric workflows that suit continuous recordings of a single participant, but complicate batch feature extraction common in machine learning.
EMGFlow, a portmanteau of EMG and Workflow, fills this gap by providing a flexible pipeline for extracting a wide range of sEMG features, with a scalable design suited for large datasets.
Example
As a quick example, the following will create a feature file, and create a plot of the "EMG_zyg" column:
import EMGFlow as ef
# Get path dictionary
path_names = ef.make_paths()
# Load sample data
ef.make_sample_data(path_names)
# Preprocess signals
ef.clean_signals(path_names, sampling_rate=2000, notch_f0=50)
# Plot data on the "EMG_zyg" column
ef.plot_dashboard(path_names, 'EMG_zyg', sampling_rate=2000)
# Extract features and save results in "Features.csv" in feature_path
df = ef.extract_features(path_names, sampling_rate=2000)
Documentation
General:
- EMG processing background
- EMGFlow processing pipeline overview
- AccessFiles module API
- PreprocessSignals module API
- PlotSignals module API
- ExtractFeatures module API
Examples:
Installation
EMGFlow can be installed from PyPI:
pip install EMGFlow
Once installed, the package can be loaded as follows:
import EMGFlow
Project dependencies can be seen in the build file.
Contributions
Contributions and community guidelines can be seen the contributing guide.
Citations
This package can be cited as follows:
@software{Conley_EMGFlow_2026,
author = {Conley, William and Livingstone, Steven R},
month = {02},
title = {{EMGFlow Package}},
url = {https://github.com/WiIIson/EMGFlow-Python-Package},
version = {1.1.2},
year = {2026},
note = "{\tt william@cconley.ca}"
}
If you are using a different version of EMGFlow, change the version tag to the version you are using.
You can also use the EMGFlow.package_citation() function to print the citation for the version of EMGFlow you are using, or use the EMGFlow.package_version() function to view the package version you are using.
Metadata
Release files for EMGFlow 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| emgflow-1.1.2.tar.gz | 3.3 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| emgflow-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.9 MB
Release files / emgflow-1.1.2.tar.gz
| Download URL | emgflow-1.1.2.tar.gz |
|---|---|
| Size | 3.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd641ec452b542fe6d08ffb1e2625855faed78cfe0ceb6d4d7f4319177f7021c
|
|
BLAKE2b-256 checksum How to use checksums |
81c8a7621f5ef3ce6433a9ecd1d5331aef9632a17da24823887b3f12d8d2f923
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Release files / emgflow-1.1.2-py3-none-any.whl
| Download URL | emgflow-1.1.2-py3-none-any.whl |
|---|---|
| Size | 613.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef3efa0899aa3b52607773bcb43872b00530d24f72757736b21cdded0f664ee9
|
|
BLAKE2b-256 checksum How to use checksums |
470cfcf52cb2e6ad0d007c67ad5a94efdf5b53ee5966ef1d154c9e7481d00d18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Security for EMGFlow 1.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.