====== Processing Tools ====== ==== Introduction ==== The purpose is to offset trial data to accommodate for any DC shift. Quantifying the EMG background noise based on a "Resting Trial" using the following algorithm: Find overall mean of trial: if positive, subtract mean from all values to offset overall average to zero if negative, add mean to all values to offset overall average to zero. Rectify trial around the zero baselines Calculate threshold values for each channel of EMG (level of digitized baseline noise). Determine noise threshold (i.e., the value determined from the resting EMG values fall below; calculated by passing a ceiling through data at successively higher levels until all data values for the 5 second duration fall below the ceiling. ==== EMG_Resting_Background ==== You can remove the background using a Meta-Command (as described below), or you can see [[Visual3D:Documentation:EMG:Filtering:Resting_Background_Noise_Offset|here]] for an example implementing this in a script. ==== EMG_Resting_Background Meta-Command ==== The following Meta Command can be Cut-and-Paste into a file named **EMG_Resting_Background.v3m** ! BEGIN_META ! META_CMD_NAME=EMG_Resting_Background ! META_PARAM= SIGNAL_NAMES:string::yes ! META_PARAM= SIGNAL_FOLDER:string::yes ! META_PARAM= RESULT_FOLDER:string::yes ! END_META Set_Pipeline_Parameter /PARAMETER_NAME=FOLDER /PARAMETER_VALUE=::SIGNAL_FOLDER ! /PARAMETER_VALUE_SEARCH_FOR= ! /PARAMETER_VALUE_REPLACE_WITH= ! /PARAMETER_VALUE_PREFIX= ! /PARAMETER_VALUE_APPEND= ; Set_Pipeline_Parameter /PARAMETER_NAME=RESULT /PARAMETER_VALUE=::RESULT_FOLDER ! /PARAMETER_VALUE_SEARCH_FOR= ! /PARAMETER_VALUE_REPLACE_WITH= ! /PARAMETER_VALUE_PREFIX= ! /PARAMETER_VALUE_APPEND= ; ! --------------------------------------------------------------- ! Offset trial data to accommodate for any DC shift ! (find overall mean of trial&ldots;if positive, ! subtract mean from all values to offset overall average to zero&ldots; ! if negative, add mean to all values to offset overall average to zero). ! Rectify trial around the zero baselines ! (all values set to absolute values). ! --------------------------------------------------------------- For_Each /ITERATION_PARAMETER_NAME=INDEX /ITEMS=::SIGNAL_NAMES ; Metric_Mean /RESULT_METRIC_NAME=_MEAN /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE ! /RESULT_METRIC_FOLDER=PROCESSED /SIGNAL_TYPES=ANALOG /SIGNAL_NAMES=::INDEX /SIGNAL_FOLDER=::FOLDER ! /SIGNAL_COMPONENTS=X /EVENT_SEQUENCE= /EXCLUDE_EVENTS= /GENERATE_MEAN_AND_STDDEV=FALSE ! /APPEND_TO_EXISTING_VALUES=FALSE ; Evaluate_Expression /EXPRESSION=ABS(ANALOG&:&:&::FOLDER&:&:&::INDEX&-&METRIC::PROCESSED&:&:&::INDEX&_MEAN) /RESULT_NAME=::INDEX /RESULT_TYPE=ANALOG /RESULT_FOLDER=::RESULT ; End_For_Each /ITERATION_PARAMETER_NAME=INDEX ; ! --------------------------------------------------------------- ! Calculated threshold values for each channel of EMG ! (level of digitized baseline noise). ! Apply noise threshold (i.e., the value determined from the ! resting EMG values fall below). Calculated by passing a ! ceiling through data at successively higher levels until ! all data values for the 5 second duration fall below the ceiling. ! --------------------------------------------------------------- Metric_Maximum /RESULT_METRIC_NAME=_REST /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE /RESULT_METRIC_FOLDER=::RESULT /SIGNAL_TYPES=ANALOG /SIGNAL_NAMES= /SIGNAL_FOLDER=::RESULT /SIGNAL_COMPONENTS=X /EVENT_SEQUENCE= /EXCLUDE_EVENTS= /GENERATE_MEAN_AND_STDDEV=FALSE ! /APPEND_TO_EXISTING_VALUES=FALSE /CREATE_GLOBAL_MAXIMUM=TRUE ; ==== Madonna EMG Remove Background Meta-Command ==== The following Meta Command removes the background noise from the EMG signals and can be Cut-and-Paste into a file named **Madonna_EMG_Remove_Background.v3m** ! BEGIN_META ! META_CMD_NAME=Madonna EMG Remove Background ! META_PARAM= SIGNAL_NAMES:string::yes ! META_PARAM= SIGNAL_FOLDER:string::yes ! META_PARAM= RESULT_FOLDER:string::yes ! META_PARAM= BACKGROUND_FOLDER:string::yes ! END_META Set_Pipeline_Parameter /PARAMETER_NAME=FOLDER /PARAMETER_VALUE=::SIGNAL_FOLDER ; Set_Pipeline_Parameter /PARAMETER_NAME=RESULT /PARAMETER_VALUE=::RESULT_FOLDER ; ! --------------------------------------------------------------- ! Remove the EMG background noise ! --------------------------------------------------------------- For_Each /ITERATION_PARAMETER_NAME=INDEX /ITEMS=::SIGNAL_NAMES ; Evaluate_Expression /EXPRESSION=ABS(ANALOG&:&:&::FOLDER&:&:&::INDEX&& - GLOBAL::METRIC&:&:&::BACKGROUND_FOLDER&:&:&::INDEX&_REST_MAX) /RESULT_NAME=::INDEX /RESULT_TYPE=ANALOG /RESULT_FOLDER=::RESULT ; Set_Data_To_New_Values /SIGNAL_TYPES=ANALOG /SIGNAL_NAMES=::INDEX /SIGNAL_FOLDER=::RESULT ! /SIGNAL_COMPONENTS=ALL_COMPONENTS ! /RESULT_SUFFIX= /RESULT_FOLDER=::RESULT ! /EVENT_SEQUENCE= ! /EXCLUDE_EVENTS= /START_FRAME=1 /END_FRAME=EOF ! /USE_POINT_RATE=TRUE /REPLACEMENT_VALUES=0 /THRESHOLD_HIGH=DATA_NOT_FOUND /THRESHOLD_LOW=GLOBAL::METRIC&:&:&::BACKGROUND_FOLDER&:&:&::INDEX&_REST_MAX ; End_For_Each /ITERATION_PARAMETER_NAME=INDEX ; ==== An example Visual3D Pipeline Command to call these Meta-Commands ==== In this example, some files are TAGGED as REST, EMG, and GAIT. !Make the Resting Trial the Active File. For_Each /ITERATION_PARAMETER_NAME=TAGS /ITEMS=REST ; Select_Active_File /FILE_NAME=::TAGS !/QUERY= ; ! Calculates resting background by calling the EMG_Resting_Background Meta-Command. EMG_Resting_Background /SIGNAL_NAMES=LGAS+LGLU+LMED+LTIB+LVAS+RGAS+RGLU+RMED+RTIB+RVAS /SIGNAL_FOLDER=EMG_FILTERED /RESULT_FOLDER=EMG_BACKGROUND ; End_For_Each /ITERATION_PARAMETER_NAME=TAGS ; ! This loop will remove the resting background from the signals. For_Each /ITERATION_PARAMETER_NAME=TAGS /ITEMS=EMG+GAIT ; Select_Active_File /FILE_NAME=::TAGS !/QUERY= ; ! Call the EMG_Remove_Background Meta-Command EMG_Remove_Background /SIGNAL_NAMES=LGAS+LGLU+LMED+LTIB+LVAS+RGAS+RGLU+RMED+RTIB+RVAS /SIGNAL_FOLDER=EMG_FILTERED /BACKGROUND_FOLDER=EMG_BACKGROUND /RESULT_FOLDER=EMG_PROCESSED ; End_For_Each /ITERATION_PARAMETER_NAME=TAGS ;