diff --git a/docs/final-report/final-report.pdf b/docs/final-report/final-report.pdf index 0ed1afd..872d5fd 100644 Binary files a/docs/final-report/final-report.pdf and b/docs/final-report/final-report.pdf differ diff --git a/docs/final-report/intro.Rmd b/docs/final-report/intro.Rmd index 84db5ca..6eb5fe2 100644 --- a/docs/final-report/intro.Rmd +++ b/docs/final-report/intro.Rmd @@ -30,7 +30,7 @@ knitr::include_graphics(path="images/emg_example.png") A blind source separation algorithm can decompose raw EMG signals into several individual electrical signals that can be ascribed to singular muscle units. The partner currently decomposes EMG signals using a free software from @ot_bioelettronica called `OTBioLab+`. This software's graphical user interface (GUI) can be seen in **figure \@ref(fig:OTBioelettronica-GUI)**. `OTBioLab+` determines the individual MUAP spike trains using a closed-source algorithm based off a paper published by @negro_muceli_castronovo_holobar_farina_2016. -(ref:OTBioelettronica-GUI) 'Graphical user interface of the `OTBioLab+` software [@ot_bioelettronica]. +(ref:OTBioelettronica-GUI) Graphical user interface of the `OTBioLab+` software [@ot_bioelettronica]. ```{r OTBioelettronica-GUI, echo=FALSE, fig.cap="(ref:OTBioelettronica-GUI)", fig.align="center", out.width="90%"} knitr::include_graphics(path="images/ot_bioelettronica.jpeg") diff --git a/docs/final-report/intro.html b/docs/final-report/intro.html deleted file mode 100644 index 4934e2c..0000000 --- a/docs/final-report/intro.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - - - - - - - - - - -intro.knit - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -

The sensorimotor system, or the bodily process that links -physical movement to outside sensory information, is a key component of -human motion [@forbes_little_candow_2012]. -A healthy sensorimotor system is critical, as it is required to -communicate, interact, and navigate through one’s environment. Muscle -movement, a key component of motion and the motor system’s purpose, is -the carefully coordinated result between the nervous and muscular -systems.

-

The Sensorimotor Physiology Lab at the UBC School of Kinesiology -studies the nervous system’s role in muscle movement. Dr. Jean-Sébastien -Blouin’s research is targeted at understanding the sensorimotor system’s -role in human balance, as well as expanding on the known -neurological-muscular mechanisms involved in human motion. By studying -the link between the nervous system and movement, researchers can -further understand the effects of neuromuscular damage. Findings can be -used to establish preventative measures, as well as to create more -effective therapeutic treatments for those with chronic neuromuscular -disorders and age-related neural degeneration [@purves_2018].

-

The brain, spinal cord, and attached nerves form the nervous system, -which is responsible for initiating and propagating electrical movement -signals to the correct muscles. These electrical bursts, known as action -potential, are initially fired off from the brain. Action potential -propagates throughout the body via neurons, which are cells specialized -in transmitting electrical signals across long distances.

-

Motor neurons are a specific subclass of neurons that create a -junction between the central nervous system and the muscular system. -Motor neurons attach to fibers in the muscle, forming an entity known as -a motor unit, as seen in figure @ref(fig:motor-unit). -When struck by action potential, the motor unit generates motor unit -action potential (MUAP), a burst of electrical activity specific to the -motor unit that produced it. The MUAP signal causes the muscle fibers -attached to the motor unit to contract [@purves_2018].

-

(ref:motor-unit) Diagram of a single motor unit. Modified from @mclaughlin_2020.

-
-(ref:motor-unit) -

-(ref:motor-unit) -

-
-

The activation of several motor units (and their accompanying MUAPs) -are required to move a single muscle. Therefore, the number of motor -units involved in an isolated muscle movement can be determined by -measuring the net electrical charge of a single muscle.

-

The partner uses non-invasive electromyography (EMG) to measure the -net firing of MUAPs across a single muscle, seen in figure -@ref(fig:emg-hardware)a as opposed to invasive EMG, seen -figure @ref(fig:emg-hardware)b. Surface electrodes are -placed on the skin and voltage is measured as participants flex and -relax a muscle. The partner uses a grid of 64 surface electrodes, as -seen in figure @ref(fig:EMG-ex), allowing the -collection of 64 streams of MUAP data across a single muscle. The raw -signal collected by EMG is the result of many MUAP peaks constructively -and destructively interfering with each other.

-

(ref:emg-hardware) Obtaining EMG with a. surface electrodes and b. -needle electrodes. Invasive EMG using needle electrodes is the more -commonly used technique, as it allows access to deeper muscle groups and -higher muscle region selectivity which decreases noise. In comparison, -non-invasive EMG using surface electrodes are less selective and can -only sample superficial muscles, as they sit on the skin far away from -the muscle fibres [@emg_decomposition_tutorial]. Non-invasive EMG -is also a more flexible and easier-to-apply technique with higher -long-term stability than invasive EMG, which are desirable attributes to -the partner [@farina_holobar_2015]. Figure -modified from @nam_cha_park_2021.

-
-(ref:emg-hardware) -

-(ref:emg-hardware) -

-
-

(ref:EMG-ex) Diagram of a single motor unit. Modified from @mclaughlin_2020.

-
-Diagram of surface EMG with 3 electrodes, and the 64 channel template used by the Sensorimotor Physiology Lab. -

-Diagram of surface EMG with 3 electrodes, and the 64 channel template -used by the Sensorimotor Physiology Lab. -

-
-

A blind source separation algorithm can decompose raw EMG signals -into several individual electrical signals that can be ascribed to -singular muscle units. The partner currently decomposes EMG signals -using a free software from @ot_bioelettronica called -OTBioLab+. This software’s graphical user interface (GUI) -can be seen in figure @ref(fig:OTBioelettronica-GUI). -This software determines the individual MUAP spike trains using a -closed-source algorithm based off a paper published by @negro_muceli_castronovo_holobar_farina_2016.

-

(ref:OTBioelettronica-GUI) ’Graphical user interface of the -OTBioLab+ software [@ot_bioelettronica].

-
-(ref:OTBioelettronica-GUI) -

-(ref:OTBioelettronica-GUI) -

-
-

The decomposition of EMG signals is a critical technique for the -partner’s research. Decomposition allows researchers to gain a deeper -understanding of which motor units are responsible for which parts of -movement in a muscle. As is, OTBioLab+ is an unideal -solution for decomposing EMG signals for the partner’s needs.

-

The creation of a custom Python package, EMGdecomPy, can -address the issues with OTBioLab+, and contains custom -functionalities specific to the partner’s use. OTBioLab+ is -closed-source, which obscures how the partner’s experimental results are -derived. By making EMGdecomPy open-source, the algorithm’s -code can be easily inspected, circumventing this problem. Additionally, -OTBioLab+ also has a 100 second time limit on experiments, -which hinders the partner as they run experiments up to 5 minutes in -length. In EMGdecomPy, there is no hard-coded time limit on -experiments that can be run.

-

The transparency of EMGdecomPy’s code and the -open-source licensing supports other parties expanding on and improving -the existing functionalities. While made for the partner, it is our hope -that EMGdecomPy will be a useful package for other -researchers to explore the mechanisms underlying the brain’s -interactions with the body’s muscles.

- - - - -
- - - - - - - - - - - - - - - diff --git a/docs/final-report/methods.Rmd b/docs/final-report/methods.Rmd index 1fa85a4..db71e49 100644 --- a/docs/final-report/methods.Rmd +++ b/docs/final-report/methods.Rmd @@ -34,11 +34,11 @@ The pre-processed data then goes through the LCA step. The LCA step is based off **Step 3: Refinement.** -After the separation vector is extracted, it goes through the refinement step. This is done because the latent component analysis may converge to unreliable estimates and through refinement the quality of the estimate is increased. The refinement step is an iterative algorithm that maximizes the regularity of the motor unit spike train. This process is carried out under the assumption that singular motor units fire off action potentials at a much more regular rate than combinations of motor units \[@negro_muceli_castronovo_holobar_farina_2016\]. +After the separation vector is extracted, it goes through the refinement step. This is done because the latent component analysis may converge to unreliable estimates and through refinement the quality of the estimate is increased. The refinement step is an iterative algorithm that maximizes the regularity of the motor unit spike train. This process is carried out under the assumption that singular motor units fire off action potentials at a much more regular rate than combinations of motor units [@negro_muceli_castronovo_holobar_farina_2016]. **a.** First, the motor unit spike train is estimated by applying the separation vector to the pre-processed data. -**b.** Then, the firing times are determined by applying the peak-finding algorithm from @2020SciPy-NMeth. Of these firing times, the instances that correspond to small peaks in the spike train are separated away from the large peaks using the KMeans algorithm from @scikit-learn. The firing times corresponding to small peaks are discarded as they likely correspond to the firing occurrence of more than one motor unit \[@negro_muceli_castronovo_holobar_farina_2016\]. The information from the accepted firing times are used to update the separation vector. +**b.** Then, the firing times are determined by applying the peak-finding algorithm from @2020SciPy-NMeth. Of these firing times, the instances that correspond to small peaks in the spike train are separated away from the large peaks using the KMeans algorithm from @scikit-learn. The firing times corresponding to small peaks are discarded as they likely correspond to the firing occurrence of more than one motor unit [@negro_muceli_castronovo_holobar_farina_2016]. The information from the accepted firing times are used to update the separation vector. **c.** The iterative refinement process converges once the coefficient of variation of the time between firings increases.