Materials and surface HDEMG data for hands-on training on motor unit identification in dynamic and fatiguing muscle contractions
Keywords: HybridNeuro, hands-on training, teaching materials, surface high density electromyogram (HDEMG), motor unit, EMG decomposition, DEMUSE Tool, dynamic contractions, fatigue, simulated HDEMG, evaluation, dataset, Matlab.
SHARING/ACCESS INFORMATION
License: The data files (in Matlab MAT format) in this dataset
are available under the Creative Commons Attribution (CC BY)
4.0 license.
The software (Matlab scripts) in this dataset is available
under the Apache 2.0 license.
Publicly accessible location of the data:
https://dk.um.si/IzpisGradiva.php?lang=eng&id=96399
PID: 20.500.12556/DKUM-96399
Recommended citation for this dataset:
Murks Nina,
Kutoš Leon, Divjak Matjaž, Holobar Aleš. “Materials and
surface HDEMG data for hands-on training on motor unit
identification in dynamic and fatiguing muscle contractions
(HybridNeuro project)”. System Software Laboratory, Faculty of
Electrical Engineering and Computer Science, University of
Maribor, Slovenia. Digital library of University of Maribor.
https://dk.um.si/IzpisGradiva.php?lang=eng&id=96399
DATA & FILE OVERVIEW
This dataset was prepared in the context of the HybridNeuro
project (https://www.hybridneuro.feri.um.si/). It contains a
collection of teaching materials and data that were used in
the Hands-on Training on motor unit identification in dynamic
and fatiguing muscle contractions, which was part of the
Workshop on Invasive Interfaces (WSII25) in Gothenburg,
Sweden, in January 2025. The Hands-on Training covered the
practical aspects of motor unit identification in various
types of muscle contractions. The teaching materials include a
curated set of HDEMG signals, with simulated motor unit
discharge patterns and Motor Unit Action Potentials (MUAPs)
recorded from healthy volunteers in dynamic (biceps brachii)
and fatiguing (abductor pollicis brevis) contractions. The
HDEMG signals were decomposed using the DEMUSE software [1]
(https://demuse.feri.um.si/). A dedicated MATLAB software was
implemented for the accuracy assessment and visual comparison
of automatic or manually edited HDEMG decomposition results
and is included in the dataset. Total dataset size is 1 GB.
- README.txt: this text file containing description of the dataset
- README.pdf: formatted PDF file containing description of the dataset
- metadata.xml: Dublin Core metadata in XML format
- LICENSE-2.0.txt: plain text file with Apache 2.0 license
- NOTICE.txt: plain text file with additional Apache 2.0 license information
- compressed (ZIPed) folder Simulated_Dynamic: contains 3
examples of decomposed HDEMG signals and 3 files with
reference decomposition; the input signals used are
simulated surface HDEMG with constant excitation and dynamic
movement:
- HN_DynSig_Lib1_ramps2_SNRInf_EF40.mat: MUAP library 1, 2 repetitions of movement, no added noise, extension factor 40 - results of automatic decomposition
- HN_DynSig_Lib1_ramps2_SNRInf_EF40_ref.mat: MUAP library 1, 2 repetitions of movement, no added noise, extension factor 40 - reference ground truth decomposition
- HN_DynSig_Lib2_ramps2_SNR20_EF25.mat: MUAP library 2, 2 repetitions of movement, 20 dB signal-to-noise ratio, extension factor 25 - results of automatic decomposition
- HN_DynSig_Lib2_ramps2_SNR20_EF25_ref.mat: MUAP library 2, 2 repetitions of movement, 20 dB signal-to-noise ratio, extension factor 25 - reference ground truth decomposition
- HN_DynSig_Lib2_ramps5_SNR20_EF25.mat: MUAP library 2, 5 repetitions of movement, 20 dB signal-to-noise ratio, extension factor 25 - results of automatic decomposition
- HN_DynSig_Lib2_ramps5_SNR20_EF25_ref.mat: MUAP library 2, 5 repetitions of movement, 20 dB signal-to-noise ratio, extension factor 25 - reference ground truth decomposition - compressed (ZIPed) folder Simulated_Fatigue: contains 3
examples of decomposed HDEMG signals and 3 files with
reference decomposition; the input signals used are
simulated surface HDEMG with constant excitation and
simulated fatigue:
- HN_FatigueSig_Lib1_Fatigue0_25_50_SNR10_EF40.mat: MUAP library 1, from 0% to 25% to 50% fatigue, 10 dB signal-to-noise ratio, extension factor 40 - results of automatic decomposition
- HN_FatigueSig_Lib1_Fatigue0_25_50_SNR10_EF40_ref.mat: MUAP library 1, from 0% to 25% to 50% fatigue, 10 dB signal-to-noise ratio, extension factor 40 - reference ground truth decomposition
- HN_FatigueSig_Lib1_Fatigue0_50_100_SNRInf_EF25.mat: MUAP library 1, from 0% to 50% to 100% fatigue, no added noise, extension factor 25 - results of automatic decomposition
- HN_FatigueSig_Lib1_Fatigue0_50_100_SNRInf_EF25_ref.mat: MUAP library 1, from 0% to 50% to 100% fatigue, no added noise, extension factor 25 - reference ground truth decomposition
- HN_FatigueSig_Lib2_Fatigue0_3_50_SNRInf_EF40.mat: MUAP library 2, from 0% to 3% to 50% fatigue, no added noise, extension factor 40 - results of automatic decomposition
- HN_FatigueSig_Lib2_Fatigue0_3_50_SNRInf_EF40_ref.mat: MUAP library 2, from 0% to 3% to 50% fatigue, no added noise, extension factor 40 - reference ground truth decomposition - individual_MU_accuracy_evaluation.m: Matlab script for evaluating the accuracy of decomposed HDEMG signals at the level of individual motor units.
- MU_editing_evaluation_tool.m: Matlab GUI application for inspection and evaluation of the results of manual editing of decomposed HDEMG signals.
All files with extension .MAT are in Matlab format, which is a proprietary format but its specifications are open and there are open source routines available for reading and writing:
- The GNU Octave software, which is an open source alternative to Matlab, can read and write .MAT files.
- The Python library Scipy can load MAT files.
- The Matio project on SourceForge is a C library for reading and writing Matlab MAT files.
METHODOLOGICAL INFORMATION
Description of methods used for collection/generation of
data:
Both sets of HDEMG data (dynamic and fatigue) were created by simulation, but are based on two libraries of real Motor Unit Action Potentials (MUAPs) that were recorded from healthy young volunteers during dynamic (biceps brachii) and fatiguing (abductor pollicis brevis) contractions in our previous experimental sessions. Those two libraries of MUAPs represent 2 different persons and are labeled as Lib1 and Lib2 in the file names. Motor unit discharge patterns were simulated by the motor unit recruitment and discharge modulation model from Fuglevand at el. [2]. Those discharge patterns and the recorded MUAPs were then convolved to generate the final simulated HDEMG signals. In some examples, randomly generated noise was added to the HDEMG signal, so that the final signal-to-noise ratio reached 10 dB or 20 dB (labeled as SNR10, SNR20 in the file names). Examples with no added noise are labeled with SNRInf. The generated discharde patterns were stored as ground truth reference in MAT files with suffix _ref. All generated HDEMG signals were then automatically decomposed with the DEMUSE software [1]. Those results are stored in MAT files without the _ref suffix.
Details for generating the fatigue signals:
- Simulated muscle: Abductor pollicis brevis
- Level of contraction: 30% of maximal voluntary contraction (MVC)
- Sampling frequency: 2048 Hz
- Simulator used for generation of MU discharge patterns: Fuglevand et al. 1993 [2]
- MUAP generation: Experimental recordings of Abductor Pollicis Brevis muscle, incremental fatigue from 0% - 100% (fully fatigued muscle), discretized into 36 levels (0% represents level 1, 100% represents level 36). The level of fatigue is only simulated at the level of MUAPs, whereas the simulated MU discharge patterns are not affected by the simulated fatigue.
- Electrode array: 12 x 5
- Interelectrode distance: 4 mm
- Signal length: 20s
Details for generating the dynamic movement signals:
- Simulated muscle: Biceps brachii
- Level of contraction: 30% of maximal voluntary contraction (MVC)
- Sampling frequency: 2048 Hz
- Simulator used for generation of MU discharge patterns: Fuglevand et al. 1993 [2]
- MUAP generation: Experimental recordings of Biceps Brachii muscle
- Level of simulated muscle shortening: from 0% (fully extended muscle) to 100% (fully shortened muscle) and back to 0% (fully extended muscle). Discretized into 36 levels (0% represents level 1, 100% represents level 36).
- Electrode array: 13 x 5
- Interelectrode distance: 8 mm
- Signal length: 20s
Description of Matlab script
- individual_MU_accuracy_evaluation.m: This is a Live Script for evaluating the accuracy of edited signals at the level of individual motor units (MUs). The script requires reference and edited signals; the signals must be decomposed, as raw recordings cannot be used directly. Each edited MU is compared to the corresponding reference MU using pulse-based matching, with cross-correlation used to identify the best match within a ±20% sampling frequency window. For each MU, Sensitivity (true positive rate), Specificity (true negative rate), and F1 score are computed, and these metrics are summarized across all MUs using minimum, maximum, mean, and standard deviation values. The results are visualized using boxplots summarizing the metrics across all MUs and bar plots showing Sensitivity, Specificity, and F1 score values per MU.
- Description of Matlab script MU_editing_evaluation_tool.m:
This application allows users to inspect and evaluate the
results of manual editing of decomposed high-density
electromyograms (HDEMG). Note: this app is intended only for
synthetic signals, where a reference (ground truth) file is
available for comparison.
Button 1 - Load Edited File: Clicking this button opens a file selection dialogue to choose a manually edited decomposed file.
Once the file is successfully loaded, its filename is displayed to the right of the button.
Button 2 - Load Reference File: This button allows the user to select a reference file that serves as the ground truth for comparison with the manually edited signal. Since this app is designed for synthetic signals, the reference file is generated alongside the original data. Again, once the file is successfully loaded, its filename is displayed to the right of the button.
Dropdown 3 - Motor Unit (MU) Selection: This dropdown lists the motor unit (MU) IDs of all MUs present in the loaded edited file. Whenever the user changes the selected MU, the signal plot 5 is updated, along with the calculated Sensitivity and Precision. Additionally, if the Ground Truth button is clicked, the figure will update to display the newly selected MU. Button 4 - Ground Truth: Clicking this button opens a new figure showing the IPT and only the true positive firings for the currently selected MU. This provides a visual reference of how the signal should look when fully and correctly edited. Signal Plot 5: After both the edited and reference files are loaded, this section displays a plot of the pulse train (PT) and discharges as denoted by the user in the edited file:
- Vertical blue lines: represent the PT.
- Colored circles: indicate discharge classification:
- Green: True Positive discharges (discharges correctly identified during manual editing)
- Orange: False Positive discharges (discharges that were added or kept incorrectly)
- Red: False Negative discharges (discharges that were missed and should have been added)
Below the plot, Sensitivity and Precision metrics are calculated and displayed based on these classifications.
All HDEMG signals underwent preprocessing and decomposition using the following methodology:
- Filtering: Signals were filtered with a 4th-order Butterworth bandpass filter, with a frequency range of 20-500 Hz.
- Decomposition: The signals were decomposed using the
DEMUSE
Tool software [1] with the following parameters:
a. Decomposition Runs: 40 independent runs were performed.
b. Extension Factor: values 25 and 40 were used (labeled as EF25 and EF40 in the file names).
Instrument- or software-specific information needed to
interpret
the data:
To run the Matlab code the Matlab software is required
(https://www.mathworks.com). Alternatively, Matlab code can be
run using the GNU Octave software which is an open source
alternative to Matlab (https://octave.org/), however the
included code was not verified to run correctly in Octave.
For reading the MAT files we recommend the following options:
- Matlab software (https://www.mathworks.com).
- The GNU Octave software, an open source alternative to
Matlab
(https://octave.org/).
- The Python library Scipy
(https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html).
- The Matio project on SourceForge
(https://sourceforge.net/projects/matio/).
Motor unit discharge patterns were simulated by the motor unit
recruitment and discharge modulation model from Fuglevand at
el.
[2]
For decomposition of HDEMG signals we used the DEMUSE Tool
software [1], version 6.3, University of Maribor, Slovenia,
available at: https://demuse.feri.um.si/.
Quality-assurance procedures performed on the data:
The set of 6 HDEMG decomposition results was manually selected
so that they represent the typical examples of automatic
decomposition of synthetic HDEMG signals with the DEMUSE Tool
software [1]. The accompanying reference decomposition results
represent the ideal (ground truth) decomposition, which is
known
since the signals were simulated.
The two Matlab scripts were extensively debugged and tested in
order to ensure that they produce correct results when run on
the supplied data files.
People involved with sample collection, processing, analysis
and/or submission:
Aleš Holobar generated the signals. Leon Kutoš implemented the
script for evaluating the accuracy of decomposed HDEMG signals
at the level of individual motor units. Nina Murks implemented
the application for inspection and evaluation of the results
of
manual editing of decomposed HDEMG signals. Matjaž Divjak
prepared and annotated the final dataset.
DATA-SPECIFIC INFORMATION FOR .MAT FILES WITH DECOMPOSED
HDEMG SIGNALS:
Only a small subset of the following variables are needed for
the analysis performed by the supplied Matlab scripts. The
rest of the variables are created during the process of saving
the decomposition results with the DEMUSE Tool software and
are kept here for compatibility purposes.
Variable list:
- AUXchannels: auxilary channel information, unused.
- Cost: structure array. Contains 1 x L cells. Each cell contains result (double value) of the cost function used by DEMUSE tool to estimate the regularity of MU firing pattern (i.e. coefficient of variation of interfiring interval). L = number of detected motor units.
- description: string. A short text description of the data.
- discardChannelsVec: 2D array of integer values, with the same dimensions as the simulated EMG electrode grid: 12 rows x 5 columns or 13 rows x 5 columns. Contains value 1 if the related electrode channel was discarded from analysis, or value 0 otherwise.
- DecompRuns: integer number. Number of DEMUSE Tool decomposition runs performed.
- DecompStat: vector of integer values. Number of motor units identified in each decomposition run.
- fsamp: integer number. Data sampling frequency in Hz.
- IED: integer number. Interelectrode distance in mm.
- IPTs: 2D array of double values with L rows x signal_length columns. Contains innervation pulse train (IPT) values as estimated by DEMUSE decomposition tool. L = number of detected motor units.
- MUIDs: structure array. Contains 1 x L cells. Each cell contains a string with the motor unit label. L = number of detected motor units.
- MUPulses: structure array. Contains 1 x L cells. Each cell contains a vector of detected motor unit dicharge instants (integer values), expressed as sample indices of the SIG vectors. L = number of detected motor units.
- origRecMode: string. Label for the recording mode of the original EMG signals.
- PNR: vector of double values with L elements. Contains calculated pulse-to-noise ratio for each detected motor unit. L = number of detected motor units.
- ProcTime: vector of integer values. Processing time of each decomposition run, in seconds.
- ref_signal: vector of double values with signal_length elements. Contains the exerted muscle force values used as a reference, expressed as percentage of the Maximum Voluntary Contraction.
- signal_length: double number. The total length of the signals in samples.
- startSIGInt: double number. Start time of the data interval used for decomposition, in seconds.
- stopSIGInt: double number. End time of the data interval used for decomposition, in seconds.
- SIG: structure array. Contains a copy of the input EMG signals. Dimensions are the same as the simulated EMG electrode grid: 12 rows x 5 columns or 13 rows x 5 columns. Each cell contains a 1 x signal_length vector of samples (double values) representing output EMG voltage.
- SIGFileName: string. Name of the file containing the input EMG signals for decomposition.
- SIGFilePath: string. Path of the file containing the input EMG signals for decomposition.
- SIGlength: double number. The total length of the signals in seconds.
DATA-SPECIFIC INFORMATION FOR .MAT FILES WITH REFERENCE
DECOMPOSITION (SUFFIX _ref):
Variable list:
- fsamp: integer number. Data sampling frequency in Hz.
- Force: double array, 1 x N in size. Contains simulated exerted force for each time instant, synchronized with the EMG data samples. N = total number of samples.
- MUAPs: cell array. The input MUAP library. Contains L cells corresponding to L simulated motor units. Each cell contains up to 36 subcells that represent different fatigue / muscle shortening levels. Each of those subcells contains a cell matrix representing the simulated EMG electrode grid: 12 rows x 5 columns or 13 rows x 5 columns. Each of those cells contains a 1 x 51 double vector of MUAP samples.
- sFirings: cell array. Contains L cells corresponding to L simulated motor units, each cell contains a 1 x M vector of motor unit discharge instants (integer values indicating sample indices). L = number of simulated motor units, M = number of motor unit discharges.
- sFiringsShortID: cell array. Contains L cells corresponding to L simulated motor units, each cell contains a 1 x M vector of fatigure / muscle shortening levels (1 - 36) that were used for generating the MU discharge. M = number of motor unit discharges.
- sig_out: cell matrix representing the output simulated EMG electrode grid: 12 rows x 5 columns or 13 rows x 5 columns. Each cell contains a 1 x N double vector of samples representing the EMG voltage. N = total number of samples.
- Shortening: double array, 1 x N in size. Contains the target profile of muscle shortening / fatigue, ranging from 0% (MUAP level 1) to 100% (MUAP level 36). N = total number of samples.
REFERENCES:
[1] DEMUSE Tool software, version 6.3, University of Maribor,
Slovenia, available at: https://demuse.feri.um.si/ .
[2] A. J. Fuglevand, D. A. Winter and A. E. Patla,
"Models of recruitment and rate coding organization in motor-unit pools,"
Journal of neurophysiology, vol. 70, pp. 2470-2488, 1993.