===== 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 ;