Feature
* Add band-pass filter function ([`6a2fe0b`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/6a2fe0bffc27c239091856bd940175d368605b32))
* Add more print statements to refinement ([`2378e67`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2378e67fbccc1ffd6ee8648d6208c80cfd514fea))
* Add discard channel argument ([`532fde3`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/532fde3f330a17c864a228a555ba5bc58c5a3a22))
* Update decomposition ([`3542783`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/3542783dc057d3b6dfd0ee3fd67800f6e7a720cd))
* Update refinement ([`8800cc3`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/8800cc3591a56f14f7464410a1cd9fd5dcea6f5f))
* Update separation ([`aa303a6`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/aa303a68f70e1021820139a59cfd97d4710298b7))
* Replace initialize_w with initial_w_matrix ([`b2d4436`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/b2d443615c311dd2ec72379d0deb569f9c0b0024))
* Add rada's peel-off function ([`fe7d0a2`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/fe7d0a2ff62b03cdfe9d23010a9752ed183e4317))
* Add rada's orthogonalization wrapper ([`cfca9cb`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/cfca9cb76becc3688ef73432c0f7d8b519c41146))
* Create deflate function ([`2826f25`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2826f2591e94d56f08048cd02429ccdb31149345))
* Create gram-schmidt function ([`3eccc57`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/3eccc578846ce73379a57410ee313bbc12cfb83d))
* Create pulse to noise ratio function ([`49515bc`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/49515bce30809d720cfefed84402debaa5a4c46b))
* Add page numbers to plots ([`7e6f0cd`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/7e6f0cd927a381bc64b759aa3e828e819c03fc0c))
* Create MUAP visualization functions ([`04667f5`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/04667f571b6b8e92c3c17ca6bed3657d6f79a1cd))
* Create new silhouette score function ([`054f0b5`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/054f0b54f42a14adcb8bd2e1d564d939aa5a468f))
* Build initialize() function ([`c0aec10`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/c0aec1065791d8b11458e47840baf6d34a6e56c9))
* New decomposition and initialize_w functions, changes to other functions ([`80d62ff`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/80d62ffb00a442af698a1839ccc33d78c089d6c5))
* Add pulse train save functionality and made code clearer ([`9fd71c5`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9fd71c50aea805995066c2bb4eb231d13c718ba7))
* Add refinement function draft ([`83d5174`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/83d517454b7615f1b7e4cdc4580799643b87b3c6))
* Create two other options for contrast functions and fix docstring for skew ([`284fdf6`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/284fdf6e2a666d4d29aeb984fcf9f4ee6b0dff9c))
* Add orthogonalize, normalize, apply_contrast_fun_router, skew functions and skeleton of sepatation function ([`79c0882`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/79c08821d6206e747c92dcf93d20403f4e32bebf))
Fix
* Rounding error in whitening test ([`0bff4cf`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0bff4cf5549d38df34c9dacb8e870f032d3aaac7))
* Correct regularization factor in whitening ([`ea754c5`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ea754c53590c46fd202a91faf6fea27e19f78eca))
* Init test ([`fdac487`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/fdac48721305dca7505ea2e7fc34cbfd3b61459d))
* Import center_matrix ([`d9fa2a8`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/d9fa2a8ff0a3ab2c4207d5489c04b2c00e9b690f))
* Change sil to use peaks and noise clusters instead of cluster a and cluster b ([`d9fb56d`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/d9fb56dd1cf1c382901798c01b4ed60624d9e9e3))
* Correct pnr formula ([`d47045a`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/d47045a77258c0b68fbd1d03a06ce5b054d82fe8))
* Edit viz function to handle pt < l ([`5bd542e`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/5bd542e3246f47f75435257824bea11d3269d6dd))
* Change column number ([`1877030`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/18770300254ec245749a3d1b4ad645e91fbe57ab))
* Fix pt dimensions and commented out count limitation in muap_plot ([`1658379`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/16583794d3ee2d84a576a25466ef4092c338766c))
* Variable typo ([`3116cc8`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/3116cc8784538a72a3e7b7b5b8a6bc2e0b895668))
* Minor test fix ([`53114ee`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/53114ee8a54b50f4b819c9507dc0a05e55db1deb))
* Orthogonalization and peel-off functions notebook ([`ef05344`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ef05344545b738ccd2c556db10d2ddcee0557efe))
* Merge conflictuehriuhudviugfuvdbfvd ([`f65c968`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/f65c96838115fe87a33fa1bce66acd5851ffb75d))
* Update interval ([`9d2c021`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9d2c021562a3395cc426125335563808cb6fa2a9))
* Omg comma making formatting funny ([`4f55ddc`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/4f55ddc6bd6da45eb361e433f67b3ace3babc3ab))
* Fix file path ([`8a7de01`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/8a7de019a30ecb1cf2e701c0be017f23d2f2939a))
* Deleted the cursed doppleganger pnr function. merge my damn pr for love of god ([`f211af1`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/f211af12e4e6adf8103a02ee88fbefe43c7c1d72))
* Remove incorrectly called function ([`6f2b4d7`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/6f2b4d77cdc16a90f9b6ffb51de9b83447a1c0cd))
* Center firing in middle of signal interval ([`9e5d39c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9e5d39c30c3f66eb9e5cb83bc8dcddc150998ac9))
* Get rid of merge conflict ([`2afed78`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2afed78c7c85aeb9249a89f3f1129a2acb9e8c52))
* Revert back to old muap interval ([`3459a83`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/3459a8389b95c1d848e22249e354fc684f444937))
* Muap test interval symmetry ([`1b68e13`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/1b68e1338c4bde3e855fcfb79d10cb3843f575ff))
* Fix: peak interval symmetry ([`a26419f`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/a26419f713c0505b93100ee7d4262f6ad836709b))
* Update import statements ([`a598132`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/a5981324278a67005456927bb96cb919dd9f5844))
* Reorder parameters where refinement is called in decomp function ([`19a60cf`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/19a60cf9eb94647973127ad596b283875ece6c0f))
* Catch up decomp function to latest or else ci fails ([`2de0281`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2de02815639d9ffbcda18a37b5a5cb3133bfd27d))
* Keep finding small bugs in refine test ([`34b98fc`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/34b98fc8c36f799233dc1c6afefb674a3346fe75))
* Remove unneeded vars, change path ([`70b921c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/70b921c4ae168890eecb1604a5bfbf23341d5ea5))
* Path name again yikes ([`4cac533`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/4cac5332a1547dce8f5ca62cd733faaf88ebb6bf))
* Update path ([`7036f9d`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/7036f9d0a32619b84f5c34f3453680751a3959f5))
* Change facet variable ([`e8ab3e1`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/e8ab3e12ad3540433692a99cfe91c27c503eb72d))
* Add defintion of l in muap_plot() ([`c882d48`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/c882d489f3436c51ff8b370a3ccf7eb767932871))
* Path name in test_maup_dict() ([`a6f8f52`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/a6f8f524d874edd5e85bceae4e5e737ce3ddfa73))
* Fix file path in test_muap_dict() ([`179929b`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/179929b03398726baa997e42a7c18bd3666cfc97))
* Remove incorrect import statement ([`a57bfe4`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/a57bfe4b452563ef0896f55fe410a1acb4a43ecb))
* Add emg import statement ([`13a1ecd`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/13a1ecd6740334e60c561ee2db1fa903b21bca31))
* Remove extraneous test ([`98a10d4`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/98a10d48e880fd80c32a6ba274cba082698f09f1))
* Modify refinement test ([`ec2b0d1`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ec2b0d1991360ceb5781eea794451f57bbba8133))
* Don't update separation vector after cv_curr > cv_prev ([`e83ca1c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/e83ca1c42e713e91d5870962fa47c36132ef7562))
* Copy paste error, EOL string ([`f6d4c17`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/f6d4c17179512372e5ad3895db0e6fd7f1322823))
* Add random_seed to kmeans ([`4f70ec7`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/4f70ec73532c4d80e10bbc405d3f4fe0700f06e7))
* Get rid of quotation marks in function arguments ([`ff70083`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ff70083f1367351806495c391e26ca1aefd3ebdb))
* Get rid of redundant parameters and update decomposition to include new refinement parameters ([`b15e5be`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/b15e5bed847d98984b5595d155b77e0f47128c8a))
* For some reason my GLs are named GMs. Fixed path ([`9fdc54f`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9fdc54f164a84356ea3efd90ea948ba2e6357929))
* Tweak refinement function to allow for random seed for testing ([`6561667`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/656166722e35aa6b470d95f36bf2af8c141d715c))
* Change function to average over every MUAP firing instead of every channel ([`2cc8837`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2cc8837d84f22baa5424df8d6a036125a3a5a1f8))
* Get rid of double ptl assignment ([`27702fc`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/27702fc5b6bdc0c809ad966327625bc5c69b9dde))
* Change silhouette_score function in refinement ([`4fb0eb4`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/4fb0eb4aa8f8feaa6199fcc49768c859ed68c504))
* Fix intra_sums ([`be163f1`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/be163f16e6a4e14aecd897f3ee10bf35fa1c5470))
* Fix inter_cluster sum and replace silhouette function in refinement ([`9c8ebc7`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9c8ebc7992e4a3a666bcf7cbb312c431ad12789b))
* Get rid of second kmeans parameter ([`7a783b1`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/7a783b1ae7b5f8cb53112c7f49ade8b33e7a0fac))
* Correct sklearn inputs and change it to save PT only if source is extracted ([`0f4c7bb`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0f4c7bb6433625954b4f2ad5654486cd3fa8c4eb))
* I edited the wrong test_function lol ([`0bb15e8`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0bb15e86ee5a25462f2bfe219390dadf8dbc8906))
* In test_log_cosh(), switch np.isclose to np.allclose [to test array calculations] ([`97259aa`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/97259aa99e70b3a39fcf3f6655e49ed6cc1b78d1))
* Forgot to define test_arr for test_apply_contrast ([`e0266f2`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/e0266f25c3ce45864f5a9f8da6fa2c62e2d5ede3))
* Change np.array_equal() to np.isclose() in test_log_cosh() ([`43e4c95`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/43e4c957905cd16f7b40d7cbb895c77599d0bbba))
* Fix initialization of w ([`a1f6f03`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/a1f6f0372b85344f0b664444ebbd191b3ceaaded))
* Update variable name in skew() ([`ab14b92`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ab14b92939eeafccf1558f78b0f9b782dcc2e5d9))
* Correct dimensions of output ([`9666833`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/96668334640b3b92f3ffc3385913ae6b6ef76920))
* Rewrite child contrast functions and docstrings to do arrays, rewrite parent apply_contrast function docstring accordingly ([`2bc1fbf`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/2bc1fbf7e819dae9f16511f62a4011da6b369d60))
* Add regularization step ([`4225f2d`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/4225f2d663919945d657e314f5e7bdbff387a37c))
* Correct variable called by preprocessing functions ([`0ada908`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0ada90803d6eb8cbdf5cd0129d21927e246aba7d))
* Correct variable called by center_matrix ([`1ca76f5`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/1ca76f55d1a1aa882796121bf7e404bcc75301ce))
* Add flatten signal ([`851bda3`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/851bda3ea5cb0e095f5719286f95f7b0edb50c36))
* Change back to use real data ([`45be0f4`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/45be0f49d65ee618f548fdcd199c1054533f7fa0))
* Add random state parameter and move W-prev=w_curr to end ([`7026f25`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/7026f25b5de91b8c1218ef1b0ceba6d371fe36b3))
* Fixed inf overflow error for log_cosh function ([`12db8af`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/12db8af3710dff110dc4c3bc3b2e06d61b8fb36a))
* Change x_cent to x ([`5083274`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/5083274c9662ba6898697c81f848b2bf59966d31))
* Correct submodule importation ([`014c25c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/014c25ce428291e55774ff11a3680fc67e785bfc))
* Get rid of centring in whiten function ([`f113bc0`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/f113bc05ed8ce6045bba2bc4a70de41e5b4efaf1))
* Correct parameters in refinement function ([`6b1d198`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/6b1d198a58a29e7d783131d5c53de8b64885eaaa))
* Rearrange arguments in decomposion(), separation(), refinement() functions ([`ddad019`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ddad0199f44d92b8f06cef31fb0b3856b14c0324))
* Improve skeleton of decomposition() function ([`76e0f59`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/76e0f596da3070cf7cb156208c1a514c0c80aa79))
* Add B as argument to separation() ([`ba3ba8b`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ba3ba8bbeb1e851eebdd5289bae85666e9ad8dc4))
* Resolve merge conflict ([`3331f42`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/3331f42131dbd964dd4c4018f1092a35c6eaa4d6))
* Rearrange functions so referenced functions are before referencering ([`635b913`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/635b9138a25ff77d33e55ad97799d1d14539fc27))
* Use proper variables in separate function ([`5a12803`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/5a12803b49e6c8805b825c0d507561e7b4efa2bc))
* Build upon separation function ([`ee0a84c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ee0a84cbde869e13424bc16d1be6eeae11e0d79f))
* Rewrite helper functions to have option to do derivative or not ([`b0107ad`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/b0107ad3f97af027e1643984255a104fa9b83b9a))
* Comment out shell of while loop so whole functions file doesn't appear broken ([`9d105e6`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/9d105e62367bca628ce2949f60b7fbbacf6c34c0))
Documentation
* Get rid of redundant argument in refinement docstring ([`acd43f6`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/acd43f639425e06c79b13437cee0d386b346eeae))
* Update returns in docstring ([`0e76114`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0e761144ccf1a5936f2a63ad40f9fb6b06c7e1d6))
* Add period to docstring lol ([`0285f88`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0285f88d37fea7809787a2b40912a1fef2b7bd11))
* Update pnr docstring to include squared source ([`cbc364c`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/cbc364c739bba86ca9684cda4157433c2924f214))
* Get rid of unnecessary while loop comment ([`8e85e98`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/8e85e98ce7b6736d9e201e271174ec2790f6b16a))
* Edit docstring to reflect average over firings instead of channels ([`de27058`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/de27058eda17f8f407ca46ebef05726a9cddb4ad))
* Get rid of plural 'unit tests' ([`e358795`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/e3587957c73c55e93ac9a6c04c0599ed0154ee8c))
* Minor formatting changes ([`cad3338`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/cad3338c0c3963a0af223f027f71d0a544e5919a))
* Correct docstrings ([`bf901e2`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/bf901e2ab2df1f06aecfba96a55fcf52db911c27))
* Add correct data citations ([`ead4b0d`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/ead4b0de278f3df49d151bc5fa79265b359f950d))
* Standardize docstrings and correct examples ([`99842fe`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/99842fe751657cb75dfff973a0356e91ac34e53c))
* Update separation function docstring ([`004e087`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/004e08704fb0536134967dde33d738d3b8441215))
Performance
* Edit test fx to use fixtures ([`0fa09c0`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/0fa09c0402f96e075b4ec84b3ca5d45a1c3aff68))
* Create fixtures for test data ([`90c57e4`](https://github.com/UBC-SPL-MDS/EMGdecomPy/commit/90c57e4ebd1c19207e41d2877acbe591d424c154))