===== Set Pipeline Parameter To Data Value =====
====Overview====
This command can be used to set the value of a pipeline parameter to a specified value as defined by the user. This value can be any type of signal in that given workspace. This command can be found under **Pipeline Control** in the pipeline workshop.
====Pipeline Command====
The command below is as seen on the Visual3D application.
Set_Pipeline_Parameter_To_Data_Value
/SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
! /SIGNAL_COMPONENTS=ALL_COMPONENTS
/PARAMETER_NAME=
;
====Command Parameters====
The following table shows the command parameters and descriptions:
|SIGNAL_TYPES |The type of signal you wish to set as the parameter value, e.g. LINK_MODEL_BASED|
|SIGNAL_FOLDER| Corresponding Folder e.g. PROCESSED|
|SIGNAL_NAMES |Name of the Desired signal|
|SIGNAL_COMPONENTS| Components of the desired Signal, default is all components|
|PARAMATER_NAME| Name for new parameter|
====Examples====
===Simple example===
Create a parameter called SUBJECT_ID based on subject names stored in PARAMETERS:SUBJECT:NAMES.
Set_Pipeline_Parameter_To_Data_Value
/SIGNAL_TYPES=PARAMETERS
/SIGNAL_FOLDER=SUBJECTS
/SIGNAL_NAMES=NAMES
! /SIGNAL_COMPONENTS=ALL_COMPONENTS
/PARAMETER_NAME=SUBJECT_ID
;
===Complex example===
Example of EMG data processing using **Set_Parameter_Pipeline_To_Data_Value** to get the analog sampling which was used to determine the number of frames of the moving RMS window.
File_New
;
Set_Pipeline_Parameter_To_Folder_Path
/PARAMETER_NAME=ROOTFOLDER
/PARAMETER_VALUE=VISUAL3D_DEFAULT_DATA_FOLDER
! /FROM_MOTION_FILE_IN_WORKSPACE=
! /PARAMETER_VALUE_SEARCH_FOR=
! /PARAMETER_VALUE_REPLACE_WITH=
! /PARAMETER_VALUE_APPEND=
! /SET_PROMPT=Select a directory
! /ALPHABETIZE=TRUE
;
File_Open
/FILE_NAME=*Q*
/FILE_PATH=::ROOTFOLDER
/SEARCH_SUBFOLDERS=TRUE
! /SUFFIX=
! /SET_PROMPT=File_Open
! /ON_FILE_NOT_FOUND=PROMPT
! /FILE_TYPES_ON_PROMPT=
;
!Assign Tags to MVC_A file
Assign_Tags_To_File
/MOTION_FILE_NAMES=*QMVC_A.C3D
! /QUERY=
/TAGS=MVC_A
;
!Assign Tags to MVC_B file
Assign_Tags_To_File
/MOTION_FILE_NAMES=*QMVC_B.C3D
! /QUERY=
/TAGS=MVC_B
;
!Assign Tags to MVC_C file
Assign_Tags_To_File
/MOTION_FILE_NAMES=*QMVC_C.C3D
! /QUERY=
/TAGS=MVC_C
;
!Assign Tags to walking files
Assign_Tags_To_File
/MOTION_FILE_NAMES=*Qtrial*.C3D
!/QUERY=
/TAGS=MOVEMENT
;
Set_Pipeline_Parameter
/PARAMETER_NAME=EMG_SIGNALS
/PARAMETER_VALUE=EMG_A+EMG_B+EMG_C
;
! Select active file ALL_FILES
Select_Active_File
/FILE_NAME=ALL_FILES
! /QUERY=
;
! Apply highpass filter with 50 Hz cutoff
Highpass_Filter
/Signal_Types=ANALOG
/SIgnal_Names=::EMG_SIGNALS
/Signal_Folder=ORIGINAL
! /Result_Suffix=
! /Result_Folder=PROCESSED
! /Filter_Class=BUTTERWORTH
/Frequency_Cutoff=50
/Num_Reflected= 0
/Total_Buffer_Size=100
/Num_Bidirectional_Passes=1
;
! Apply lowpass filter with 500 Hz cutoff
Lowpass_Filter
/Signal_Types=ANALOG
/SIgnal_Names=::EMG_SIGNALS
/Signal_Folder=PROCESSED
! /Result_Suffix=
! /Result_Folder=PROCESSED
! /Filter_Class=BUTTERWORTH
/Frequency_Cutoff=500
/Num_Reflected= 0
/Total_Buffer_Size=100
/Num_Bidirectional_Passes=1
;
Set_Pipeline_Parameter_To_Data_Value
/SIGNAL_TYPES=PARAMETERS
/SIGNAL_FOLDER=ANALOG
/SIGNAL_NAMES=RATE
! /SIGNAL_COMPONENTS=ALL_COMPONENTS
/PARAMETER_NAME=ANALOGRATE
;
Moving_RMS
/SIGNAL_TYPES=ANALOG
/SIGNAL_NAMES=::EMG_SIGNALS
/SIGNAL_FOLDER=PROCESSED
! /RESULT_SUFFIX=
/RESULT_FOLDER=RMS
/NUM_WINDOW_FRAMES=1+0.1*&::ANALOGRATE&
;
Event_Explicit
/EVENT_NAME=START
/FRAME=50
! /TIME=
;
Event_Explicit
/EVENT_NAME=END
/FRAME=250
! /TIME=
;
Set_Pipeline_Parameter
/PARAMETER_NAME=START_AT_EVENT
/PARAMETER_VALUE=START
;
Set_Pipeline_Parameter
/PARAMETER_NAME=END_AT_EVENT
/PARAMETER_VALUE=END
;
For_Each
/ITERATION_PARAMETER_NAME=INDEX
/ITEMS=::EMG_SIGNALS
;
! Create an event at the maximum value
Event_Global_Maximum
/SIGNAL_TYPES=ANALOG
/SIGNAL_NAMES=::INDEX
/SIGNAL_FOLDER=RMS
/EVENT_NAME=EMG_MAX
/SELECT_X=TRUE
! /SELECT_Y=FALSE
! /SELECT_Z=FALSE
/START_AT_EVENT=::START_AT_EVENT
/END_AT_EVENT=::END_AT_EVENT
;
! Create an event MEAN_START 15 frames prior to the max event
Event_Copy
/EVENT_NAME=EMG_MAX
! /EVENT_INSTANCE=0
! /START_AT_EVENT=
! /END_AT_EVENT=
/NEW_EVENT_NAME=MEAN_START
/FRAME_OFFSET=-15
;
! Create an event MEAN_END 15 frames after the max event
Event_Copy
/EVENT_NAME=EMG_MAX
! /EVENT_INSTANCE=0
! /START_AT_EVENT=
! /END_AT_EVENT=
/NEW_EVENT_NAME=MEAN_END
/FRAME_OFFSET=15
;
! Calculate mean of EMG signal between MEAN_START and MEAN_END
Metric_Mean
/RESULT_METRIC_NAME=::INDEX&_SCALE
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
/RESULT_METRIC_FOLDER=EMG_SCALE
/SIGNAL_TYPES=ANALOG
/SIGNAL_NAMES=::INDEX
/SIGNAL_FOLDER=RMS
/SIGNAL_COMPONENTS=0
/EVENT_SEQUENCE=MEAN_START+MEAN_END
/EXCLUDE_EVENTS=
/GENERATE_MEAN_AND_STDDEV=FALSE
! /APPEND_TO_EXISTING_VALUES=FALSE
;
! calculate the global maximum of the mean signal
Metric_Maximum
! /RESULT_METRIC_FOLDER=PROCESSED
/RESULT_METRIC_NAME=
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
/SIGNAL_TYPES=METRIC
/SIGNAL_FOLDER=EMG_SCALE
/SIGNAL_NAMES=::INDEX&_SCALE
/COMPONENT_SEQUENCE=ALL
/EVENT_SEQUENCE=
/EXCLUDE_EVENTS=
/SEQUENCE_PERCENT_START=
/SEQUENCE_PERCENT_END=
! /GENERATE_MEAN_AND_STDDEV=TRUE
! /GENERATE_MEAN_AND_STDDEV_ACROSS_SUBJECTS=FALSE
! /APPEND_TO_EXISTING_VALUES=FALSE
/CREATE_GLOBAL_MAXIMUM=TRUE
! /CREATE_TRIAL_MAXIMUM=FALSE
;
! Clean up some temporary signals
Event_Delete
/EVENT_NAME=EMG_MAX+MEAN_START+MEAN_END
! /EVENT_SEQUENCE=
! /EXCLUDE_EVENTS=
! /TIME=
;
Remove_Signals
/SIGNAL_TYPES=METRIC
/SIGNAL_NAMES=::INDEX&_SCALE_MAX
/SIGNAL_FOLDER=PROCESSED
;
End_For_Each
/ITERATION_PARAMETER_NAME=INDEX
;
For_Each
/Iteration_Parameter_Name=CURRENT_SIGNAL
/Items=EMG_A+EMG_B+EMG_C
;
! Divide the EMG signal by it's maximum value, which was stored automatically in the GLOBAL workspace
Evaluate_Expression
/EXPRESSION= ANALOG::ORIGINAL::&::CURRENT_SIGNAL& / GLOBAL::METRIC::PROCESSED::&::CURRENT_SIGNAL&_SCALE_MAX
! /SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ANALOG
/RESULT_FOLDERS=NORMALIZED
/RESULT_NAME=::CURRENT_SIGNAL
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
End_For_Each
/Iteration_Parameter_Name= CURRENT_SIGNAL
;