guilhermerc / semg-decomposition

Implementation of surface EMG decomposition as proposed on Francesco Negro et al 2016 J. Neural Eng. 13 026027.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

semg-decomposition

GUI on jupyter notebook

semg-ui

Progress tracking

The following algorithm is described on Negro et al. (J. Neural Engineering, 2015) - page 3:

  • Extend the observations x by a R factor
  • Subtract the mean from the observations x
  • Whiten x
  • Initialize the matrix B to empty matrix
  • For i = 1, 2, ..., M repeat:
    • 1. Initialize the vector w_i(0) and w_i(-1)
    • 2. While |w_i(n)^{T}w_i(n - 1) - 1| < Tolx
          a. Fixed point algorithm
              w_i(n) = E{zg[w_i(n - 1)^{T}z]} - Aw_i(n - 1)
              with A = E{g'[w_i(n - 1)^{T}z]}
          b. Orthogonalization
              w_i(n) = w_i(n) - BB^{T}w_i(n)
          c. Normalization
              w_i(n) = w_i(n)/||w_i(n)||
          d. Set n = n + 1
    • 3. End while
    • 4. Initialize CoV_{n - 1} and CoV_n
    • 5. While CoV_n < CoV_{n - 1}
          a. Estimate the i-th source
          b. Estimate the pulse train PT_n with peak detection and K-means class
          c. Set CoV_{n - 1} = CoV_n and calculate CoV_n of PT_n
          d. w_i(n + 1) = (1/J) \sum_{J = 1}^{J} z(t_j)
          e. Set n = n + 1
      End while CoV(n) < CoV(n - 1)
    • 6. If SIL > 0.9
          a. Accept the source estimate
          b. Add w_i to the matrix B
      End for loop

About

Implementation of surface EMG decomposition as proposed on Francesco Negro et al 2016 J. Neural Eng. 13 026027.

License:GNU General Public License v3.0


Languages

Language:Jupyter Notebook 61.6%Language:Python 38.4%