DOI: 10.5061/dryad.66t1g1k70
title: Myomatrix arrays for high-definition muscle recording

description: Neurons coordinate their activity to produce an astonishing variety of
 motor behaviors. Our present understanding of motor control has grown
 rapidly thanks to new methods for recording and analyzing populations of
 many individual neurons over time. In contrast, current methods for
 recording the nervous system’s actual motor output – the activation of
 muscle fibers by motor neurons – typically cannot detect the individual
 electrical events produced by muscle fibers during natural behaviors and
 scale poorly across species and muscle groups. Here we present a novel
 class of electrode devices (“Myomatrix arrays”) that record muscle
 activity at cellular resolution across muscles and behaviors.
 High-density, flexible electrode arrays allow for stable recordings from
 the muscle fibers activated by a single motor neuron, called a “motor
 unit”, during natural behaviors in many species, including mice, rats,
 primates, songbirds, frogs, and insects. This technology therefore allows
 the nervous system’s motor output to be monitored in unprecedented detail
 during complex behaviors across species and muscle morphologies. We
 anticipate that this technology will allow rapid advances in understanding
 the neural control of behavior and in identifying pathologies of the motor
 system.
description: Full details are available in the main manuscript text and the
 attached README file.
description: **Myomatrix arrays for high-definition muscle recording** Chung *et al.*,
 *eLife* (2023) All data and code described below can be found here:
 [https://doi.org/10.5061/dryad.66t1g1k70](https://doi.org/10.5061/dryad.66t1g1k70) *** ***Overview of data structures*** This data archive includes two electromyography (EMG) datasets recorded with Myomatrix arrays from behaving animals. These are the mouse triceps data shown in **Figure 1(b,d)** and **Supplemental Figure 2(a,b,e,f)**, and the rhesus macaque biceps data shown in **Figure 3** and **Supplemental Figure 2g**. Please see the manuscript for descriptions of how each dataset was recorded. Data files are provided in both .h5 (Hierarchical Data Format 5) and .m (MATLAB) format: Approximately **2 minutes** of data recorded from a mouse running on a treadmill (file size roughly 0.4 GB) `Myomatrix_eLife_2023_EMG_DATA_mouse_triceps [.mat,.h5]` Approximately **100 minutes** of data from the macaque performing planar reaching movements (file size roughly 3.8 GB for .mat, 11.2 GB for .h5) `Myomatrix_eLife_2023_EMG_DATA_macaque_biceps [.mat,.h5]` Spatial channel maps of the injectable and chronically-implanted devices used in the macaque and mouse dataset, respectively: `Myomatrix_eLife_2023_CHANNEL_MAP_mouse_triceps [.mat,.h5]` `Myomatrix_eLife_2023_CHANNEL_MAP_macaque_biceps [.mat,.h5]` *** ***Guide to variables (EMG data files):*** Each dataset (`Myomatrix_eLife_2023_EMG_DATA_macaque_biceps` and `Myomatrix_eLife_2023_EMG_DATA_mouse_triceps`) includes the following: **Variable name: `EMG_data`** **Description:** Myomatrix data (in units of microvolts) in an NxM matrix, where N is the number of time samples, and M is the number of recorded channels. M=32 in the macaque data (unipolar recordings from 32 electrode contacts), and M=16 in the mouse data (bipolar signals from 32 electrode contacts; see Note 2 below). **Notes:** 1. The macaque dataset was high-pass filtered with a cutoff of 250Hz. The mouse dataset was bandpass filtered between 300-7500 Hz (see Methods). 2. The mouse data was initially recorded in unipolar mode; we subsequently subtracted the unipolar signals from adjacent channels to approximate bipolar recordings. 3. To reduce file size, `EMG_data` in the macaque dataset is saved as a 16-bit integer (all other variables are saved as double-precision values). 4. In the macaque recording, three of the 32 electrode contacts on the injectable Myomatrix device had impedances &gt;1 MOhm, indicating broken or otherwise nonfunctional electrode contacts. The voltage values from these (channels 1, 4, and 17, provided in columns `[1,4,17]` in `EMG_data`) have therefore been set to zero. **Variable name: `sampling_rate`** **Description:** Sampling frequency of `EMG data` (in Hz). **Variable name: `sample_ID_vec`** **Description:** Time (in units of sample number, divide by `sampling_rate` to covert to units of time) of each spike waveform isolated by the modified version of Kilosort described in the manuscript. Note that by design, Kilosort does not necessarily label every waveform, only those that can be confidently assigned to waveform clusters. **Variable name: `unit_ID_vec`** **Description:** Motor unit identity of each sorted spike waveform. Units are numbered in decreasing order of the total number of spikes fired in the dataset, i.e. the unit that fired the most spikes is defined as unit 1, the unit that fired the second-most spikes is defined as unit 2, etc. As described the text, the mouse dataset includes a total of 6 identified motor units and the macaque dataset includes 13 sorted units. *** ***Guide to variables (channel maps):*** Each channel map file (`Myomatrix_eLife_2023_CHANNEL_MAP_mouse_triceps` and `Myomatrix_eLife_2023_CHANNEL_MAP_macaque_biceps`) includes the following, which can be used by Kilosort or other spike-sorting approaches to define the geometry of the electrode array: **Variable name: `xcoords`, `ycoords`** **Description:** These variables describe the spatial location of the recording channels, can be used by Kilosort to constrain the spatial extent over which the same unit may appear (see Methods). For the macaque dataset, *xcoords* and *ycoords* define the coordinates, in units of microns, of each of the 32 electrode contacts (which were recorded in unipolar mode, see manuscript). For the mouse dataset, $xcoords$ and $ycoords$ define the locations at the midpoint between each of the 16 pairs of electrode contacts that are subtracted to produce the bipolar signal. **Variable name: `kcoords`** **Description:** In Kilosort, `kcoords` provides an index defining on which electrode shank each channel is located. **Variable name:** chanMap, chanMap0ind **Description:** Index of channel numbers; either 1-indexed (e.g. channel 1-32) or 0-indexed (e.g. channel 0-31). **Variable name: `connected`** **Description:** In Kilosort, working channels indexed with `connected=1`, broken channels indexed with `connected=0`. As described above, in the macaque dataset, channels 1, 4, and 17 were broken, and the corresponding columns of `EMG_data` are set to zero. Note however that in our modified version of Kilosort, we set all `connected` values to 1 to maintain the size and shape of the channel map. *** ***Included MATLAB code:*** We provide **`MAKEFIG_myomatrix_EMG_and_sorting.m`**, which plots subsets of time (and channels) to allow users to view the EMG data along with our sorting After loading either `Myomatrix_eLife_2023_EMG_DATA_mouse_triceps.mat` or `Myomatrix_eLife_2023_EMG_DATA_macaque_biceps.mat` into the MATLAB workspace, run the following: **`MAKEFIG_myomatrix_EMG_and_sorting(EMG_data,unit_ID_vec,sample_ID_vec,sampling_rate)`** This code will create two figures. The first figure will show a subset of EMG channels during 20 seconds of recording, as well as the outcome of our spike sorting (see manuscript for spike sorting details. The second figure will show a summary of the average firing rate of each motor unit across the duration of the recording session. Modifying this code will allow users to view other time periods or subsets of channels.