-
Notifications
You must be signed in to change notification settings - Fork 20
Began work on a demo using windowed audio #109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
G-ODonnell
wants to merge
223
commits into
LibEMG:latest
Choose a base branch
from
G-ODonnell:latest
base: latest
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Modified feature extraction to use new FeatureExtractor interface.
Replaced list of features with FeatureExtractor. This allows the user to pass in a FeatureExtractor object with feature parameters + standardization.
Added offline regression example .md and .rst files. Also added link to this example in index.rst.
Main --> Develop
This reverts commit 353e286.
Class name was accidentally changed during a previous commit. Reverted so its name is more consistent with other classes.
Previous commit added a duplicate write_output method definition in OnlineStreamer.
Some time series models operate by predicting on a sequence of windows instead of raw EMG data. Added option to queue windows instead of just passing in a single window.
sphinx-doc parsing wasn't detecting classes that didn't have docstrings before the constructor. Moved constructor docstrings to reflect this.
Added regression details to tabs that just described classification.
Feature queue parameter was in OnlineStreamer, but not the online classifier and regressor. Added documentation to those classes and implemented parameters to create models that feature queue.
Channels could not be isolated for online data. Added functionality to only grab certain channels online.
This reverts commit ec52763.
Rename ColumnFetch to ColumnFetcher
Offline Regression Example
Default value for regex helper function often threw an error when searching for a pattern. Replaced the default value with the wildcard, so users can use this to grab the potential values without knowing them.
Since the regex helper function can take None values, users may pass in None to RegexFilter. This wouldn't work since we store metadata as an index of the values they pass in. Added a check to ensure this doesn't happen.
Default value for regex helper function often threw an error when searching for a pattern. Replaced the default value with the wildcard, so users can use this to grab the potential values without knowing them.
Since the regex helper function can take None values, users may pass in None to RegexFilter. This wouldn't work since we store metadata as an index of the values they pass in. Added a check to ensure this doesn't happen.
An error was thrown if our method of calculating steady state frames failed (like in cases where there weren't any steady state frames). Added a try catch to deal with this.
Managing contructor parameters and docstrings for Fitts and ISOFitts was quite tedious and would only get worse when adding more Fitts environments. Extracted many configuration parameters (e.g., target size and color) to a dataclass. Now the docstring and parameters of the dataclass can be changed to update both environments.
Fix `visualize_heatmap` Throwing Error for Feature Lists of Length 1
Changed colors to use a color-blind friendly palette. Also added parameters to change timer color, background color, and cursor in target color.
Processes are created for visualize and log_to_file, but they weren't created as daemon processes. This meant that users had to manually call stop_log() and stop_visualize(). Otherwise, the script would hang because these processes would continue even after the main script was finished. Created these as daemons so they will be killed when the parent process is killed.
* Dataset updates * Updates * Added Grab Myo * Updates * Changed pathing * Update OneSubjectEMaGerDataset to new format Added in OneSubjectEMaGerDataset for regression tasks. Updated for new Dataset format. * Add split parameter to prepare_data Return value of prepare_data was changed to a dictionary, which would be a breaking change. Modified this so users can pass in a flag that will determine if it is returned as a dictionary or a data handler. * Updates * Updates * Fixed Grab Myo * Added resp to EPN * Updated the data handler to run faster * Made them all parse fast * Sped up window parsing * Fixed data handler * Updated ref * Made faster * Fixed * Updated * Updates * Updates * Updates * Added cropping * Updated to crop better * Updates * Undo * Hyser dataset Started working on Hyser dataset. Created parent class and started 1DOF class. Both classes still need to be tested. * Updated libemg * Fix zoom logical error Parameter passed to scipy zoom created a value for each column instead of one for each axis. This didn't throw an error in the past because most data that had been tested was also 2 DOF. Modified to proper zoom factor. * Add regex filter packaging and .hea support to FilePackager FilePackager could not read .hea files and creating a package function to match based on filename was tedious. Added the option to pass in a list of RegexFilters that will match the regex metadata from two files to package them. * Add check in regex package function Some metadata files would throw an error when calling get_metadata because the file didn't match the original regex filter. Added a check so False is returned if it doesn't match the RegexFilters. * Fix Hyser1DOF Added correct RegexFilters, package function, and data split. * Added CI dataset * Updates * Updates * UpdaTes * added limb position * radman->radmand * added h5py req * added kaufmannMD * created kaufmann class * added submodules to _dataset * Updated myodisco * Updates * added h5py * HyserNDOF and HyserRandom Classes Added classes for Hyser NDOF and random datasets. * Add type hint to RegexFilter Specified that values should be a list of strings. * Handle single values from MetadataFetcher MetadatFetcher stated in the docs that it expected an N x M array, but didn't throw an error as long as an array was returned. Added a check to ensure that single values aren't being returned. If a single value array is returned, it is cast to an N x 1 array. * Hyser PR Dataset Implemented pattern recognition Hyser dataset. * Remove subject 10 from random task dataset Subject 10 is missing a labels file, so removed this subjects from the random task dataset. * Rename Hyser to _Hyser Added _ to signify that this is a hidden class. * Hyser documentation Added documentation to Hyser dataset classes. * Don't do any processing on the dataset * Add NinaproDB8 * Add note to NinaproDB8 * Add OneSubjectEMaGerDataset import to datasets.py * Add OneSubjectEMaGerDataset to dataset list * Fix parse_windows for 2D metadata parse_windows call np.hstack to stack metadata, which works for 1D arrays but throws an error for 2D arrays since different files likely won't have the exact same number of samples. We also don't want this behaviour anyways since we want to stack along the sample axis. Replaced np.hstack with np.concatenate so metadata is always concatenated along the 0th axis. * Reimplement NinaPro cyberglove data Parsing cyberglove data wasn't brought over when modifying datasets. Reimplemented cyberglove parsing. * Allow empty strings in RegexFilter Added option to pass in an empty string as a description for a RegexFilter for cases where you want to filter files, like finding a labels file, but don't necessarily want that metadata to be stored. * Properly handle cyberglove data Previous implementation didn't consider that some files are skipped because they don't have cyberglove data. Added logic to parse all data, and then allow user to select what they want to grab based on if they're using the cyberglove. * added tmr data * Updates * Updated logging * Updates * Updates * Add UserComplianceDataset * Updates * Updates * Convert labels field to classes in HyserPR * added CIIL_WS. Fixed dataset exist check for regression & WS * initial commit for CIIL_WS * added onedrive download method * added onedrive download method * added one drive downloader * added arguments for unzip and clean * now downloads * Fixed one site bio * Hyser labels fix * Add subjects to Hyser classes * Continuous transitions debugging * Add subjects to OneSubjectEMaGerDataset * Evaluate method fixes * Fixed continuous * Fix subject indexing with Hyser * Handle default subject values for Hyser datasets * Fixed DB8 * Hyser missing subject fixes * added onesiteBP * Fixed continuous transitions * Biopoint * Fixed hyser * Fixed fougner * Add linear mapping to NinaproDB8 * Normalize NinaProDB8 labels * Add parameter to normalize NinaProDB8 labels * Replace string concatenation with fstring String concatenation only worked when strings were passed in. * fxied some docs * Small fixes * Updated doc * Changed to fast by default * Added cross_user evaluation * Trying to fix grab * Updates * Changed to just one session * Fixed error * Trying to fix grab myo * Fixed cross user * Updates * Added option for CNN * datasets * Added nomralization * added subject to prepare method * Updated docs * Fixed cross-user * Add subjects parameter to UserComplianceDataset * Partially fixed the memory issue * Fixed EPN * Fixed * Removed disco * Updates * Fixed FORS-EMG * Updated hyser * Hopefully fixed hyser * Fixed hyser part 2 * Updates * Added meta * Fixes * Fixed all regression datasets * Upadted meta * Update UserComplianceDataset subject IDs UserComplianceDataset subject IDs were reverted to original. Updated full subject list to reflect this. * Updated all to split Ture * fixed * cross user * Updated EPN * Update UserComplianceDataset baseline analysis This dataset was made to train on poor data and test on good, so having the default use just baseline data didn't make sense. * Added docs for most classification datasets * Just need to add Hyser and references * Doc changes * updated docs to include datasets * Updates * More doc updates * Updates and fixed offline metrics * Updated offline metrics * Updated TMR * Remove Hyser workaround A previous commit had added a hacky workaround for dealing with subject IDs that were removed in the Hyser dataset. Removed this change as it has been fixed by new subject indexing. --------- Co-authored-by: Christian Morrell <cmorrell@unb.ca> Co-authored-by: ECEEvanCampbell <evan.campbell1@unb.ca>
* Add HyserMVC Dataset All Hyser datasets had been included except for MVC. Added MVC in case users wanted it for normalization. * Fix train/test split for HyserMVC
Many of these parameters were for testing and/or primarily for regression. Reduced dwell time and made timeout default to None to apply to most use cases. Also made num_trials a required parameter.
adding axis to the delsys streamer was done to the wrong location
Fitts Improvements
-speaker_distortion.py contains the SpeakerDistortionDataset class, which is able to pull a dataset from my own github. If libEMG wants to fork my database repo, they can and I can refer to that instead. I used the same MIT license. -datasets.py now imports speaker_distortion. As far as I know this is not really used, but I just want to follow the convention of other datasets. -speaker_loading_offline_test.py. Work in progress. I will also be adding 2-3 features specific to low-noise audio. -SpeakerDistortionDataset - It's just there in the test folder so that users dont have to download the dataset immediately after loading speaker_loading_offline_test.py
e230a12 to
439358c
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
-speaker_distortion.py contains the SpeakerDistortionDataset class, which is able to pull a dataset from my own github. If libEMG wants to fork my database repo, they can and I can refer to that instead. I used the same MIT license.
-datasets.py now imports speaker_distortion. As far as I know this is not really used, but I just want to follow the convention of other datasets.
-speaker_loading_offline_test.py. Work in progress. I will also be adding 2-3 features specific to low-noise audio.
-SpeakerDistortionDataset - It's just there in the test folder so that users dont have to download the dataset immediately after loading speaker_loading_offline_test.py