User Tools

Site Tools


visual3d:documentation:pipeline:metric_commands:metric_cross_product

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
visual3d:documentation:pipeline:metric_commands:metric_cross_product [2024/07/16 19:29] – created sgrangervisual3d:documentation:pipeline:metric_commands:metric_cross_product [2025/10/03 17:35] (current) – [Example: Computing Step Length from Stride Vectors Using Dot Product] wikisysop
Line 1: Line 1:
-====== Metric_Cross_Product ======+====== Metric Cross Product ======
  
-Creates a cross product of two metric vectors.+====Overview==== 
 +The Metric Cross Product command is used to create a cross product of two metric vectors. This could include finding the torque acting on a joint or other similar uses. The command can be found within the **Pipeline Workshop** in the **Metric** folder. The command acts on the active files.
  
-The command acts on the active files.+====Pipeline Command====
  
-{{MetricCrossProductDlg.png}}+The command, as seen in the pipeline workshop, is below.
  
 <code> <code>
 Metric_Cross_Product Metric_Cross_Product
-/RESULT_METRIC_NAME=The name of the result signal +/RESULT_FILE
-! /RESULT_METRIC_FOLDER=The name of the result signal folder +! /RESULT_METRIC_FOLDER=PROCESSED 
-/METRIC1_FILE=The movement trial containing the first metric value +/RESULT_METRIC_NAME
-/METRIC1_NAME=The name of the metric signal to be evaluated  +/METRIC1_FILE
-! /METRIC1_FOLDER=The name of the metric signal folder  +! /METRIC1_FOLDER=PROCESSED 
-/METRIC2_FILE=The movement trial containing the second metric value +/METRIC1_NAME
-/METRIC2_NAME=The name of the metric signal folder  +/METRIC2_FILE
-! /METRIC2_FOLDER=The name of the metric signal folder  +! /METRIC2_FOLDER=PROCESSED 
-! /DIVIDE_BY_METRIC2_LENGTH=(True or False) Divide the resulting signal by the length of the second metric  +/METRIC2_NAME= 
-! /GENERATE_MEAN_AND_STDDEV=(True or False)Generate the mean and standard deviation for all of the metrics created  +! /DIVIDE_BY_METRIC2_LENGTH=TRUE 
-! /APPEND_TO_EXISTING_VALUES=(True or False)Append this list of metrics to an existing metric of the same result name  +! /GENERATE_MEAN_AND_STDDEV=TRUE 
-! /GENERATE_VECTOR_LENGTH_METRIC=(True or False) +! /APPEND_TO_EXISTING_VALUES=FALSE 
-! /RETAIN_NO_DATA_VALUES=(True or False)+! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
 +! /RETAIN_NO_DATA_VALUES=FALSE
 ; ;
 </code> </code>
 +
 +====Command Parameters====
 +
 +The following table shows the command parameters seen above and their descriptions:
 +
 +|**RESULT_METRIC_NAME**|**The name of the result signal**|
 +|**RESULT_METRIC_FOLDER**|**The name of the result signal folder**|
 +|**METRIC1_FILE**|**The movement trial containing the first metric value**|
 +|**METRIC1_NAME**|**The name of the signal containing the first metric value**|
 +|**METRIC1_FOLDER**|**The name of the metric signal folder**|
 +|**DIVIDE_BY_METRIC2_LENGTH**|**(True or False) Divide the resulting signal by the length of the second metric**|
 +|**GENERATE_MEAN_AND_STDDEV**|**(True or False)Generate the mean and standard deviation for all of the metrics created**|
 +|**APPEND_TO_EXISTING_VALUES**|**(True or False)Append this list of metrics to an existing metric of the same result name**|
 +|**GENERATE_VECTOR_LENGTH_METRIC**|**(True or False)Generate metric value for vector length**|
 +|**RETAIN_NO_DATA_VALUES**|**In cases where there is NO_DATA at an event, you need to specify the parameter /Retain_No_Data_Values=TRUE should you want this included in the resulting signal.**|
 +
 +====Dialog====
 +The command can be edited in a text editor or in a dialog form. To edit in the dialog pop up form either click on the **Edit** button in the pipeline workshop or double-click on the pipeline command. The dialog is shown below.
 +
 +{{:MetricCrossProductDlg.png}}
 +
 +The dialog box allows you to assign values to the command parameters outlined above.
  
 === Metric_File === === Metric_File ===
Line 39: Line 63:
 The results are concatenated to an existing signal. The results are concatenated to an existing signal.
  
 +====Example: Computing Step Length from Stride Vectors Using Dot Product====
 +In this example the **Metric Cross Product** command is used along with **Metric Vector Between Events** and **Automatic Gait Events** to find the width of each step in a gait trial.
 +
 +First all files are selected as active and key gait events are defined for each trial:
 +
 +<code>
 +Select_Active_File 
 +/FILE_NAME=ALL_FILES 
 +;
 +
 +Automatic_Gait_Events
 +! /FRAME_WINDOW=8
 +! /USE_TPR=TRUE
 +! /TPR_EVENT_INSTANCE=1
 +;
 +</code>
 +
 +Next **Metric Vector Between Events** is used twice for each side to define vectors for the proximal end of each foot between gait events:
 +
 +<code>
 +Metric_Vector_Between_Events 
 +/START_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/START_SIGNAL_NAME=ProxEndPos 
 +/START_SIGNAL_FOLDER=LFT 
 +/END_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/END_SIGNAL_NAME=ProxEndPos 
 +/END_SIGNAL_FOLDER=LFT 
 +/EVENT_SEQUENCE=LHS+LHS 
 +/EXCLUDE_EVENTS= 
 +/METRIC_NAME=StrideVectors 
 +! /GENERATE_MEAN_AND_STDDEV=TRUE 
 +! /APPEND_TO_EXISTING_VALUES=FALSE 
 +! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
 +;
 +
 +Metric_Vector_Between_Events 
 +/START_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/START_SIGNAL_NAME=ProxEndPos 
 +/START_SIGNAL_FOLDER=RFT 
 +/END_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/END_SIGNAL_NAME=ProxEndPos 
 +/END_SIGNAL_FOLDER=RFT 
 +/EVENT_SEQUENCE=RHS+RHS 
 +/EXCLUDE_EVENTS= 
 +/METRIC_NAME=StrideVectors 
 +! /GENERATE_MEAN_AND_STDDEV=TRUE 
 +/APPEND_TO_EXISTING_VALUES=TRUE 
 +! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
 +;
 +
 +Metric_Vector_Between_Events 
 +/START_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/START_SIGNAL_NAME=ProxEndPos 
 +/START_SIGNAL_FOLDER=RFT 
 +/END_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/END_SIGNAL_NAME=ProxEndPos 
 +/END_SIGNAL_FOLDER=LFT 
 +/EVENT_SEQUENCE=RHS+LHS 
 +/EXCLUDE_EVENTS= 
 +/METRIC_NAME=LeftStep 
 +/GENERATE_MEAN_AND_STDDEV=FALSE 
 +! /APPEND_TO_EXISTING_VALUES=FALSE 
 +! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
 +;
 +
 +Metric_Vector_Between_Events 
 +/START_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/START_SIGNAL_NAME=ProxEndPos 
 +/START_SIGNAL_FOLDER=LFT 
 +/END_SIGNAL_TYPE=KINETIC_KINEMATIC 
 +/END_SIGNAL_NAME=ProxEndPos 
 +/END_SIGNAL_FOLDER=RFT 
 +/EVENT_SEQUENCE=LHS+RHS 
 +/EXCLUDE_EVENTS= 
 +/METRIC_NAME=RightStep 
 +/GENERATE_MEAN_AND_STDDEV=FALSE 
 +! /APPEND_TO_EXISTING_VALUES=FALSE 
 +! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
 +;
 +</code>
 +
 +Now that the vectors for the feet have been defined, **Metric Cross Product** can be used to compute the dot product of those vectors and determine the step width for each stride:
 +
 +<code>
 +! Calculate LeftStepWidth by taking cross product of LeftStep vector and StrideVectors_MEAN
 +! Generate Mean and STD DEV
 +Metric_Cross_Product 
 +! /METRIC1_FILE= 
 +/METRIC1_NAME=LeftStep 
 +! /METRIC1_FOLDER=PROCESSED 
 +/METRIC2_FILE=GLOBAL 
 +/METRIC2_NAME=StrideVectors_MEAN 
 +! /METRIC2_FOLDER=PROCESSED 
 +! /DIVIDE_BY_METRIC2_LENGTH=TRUE 
 +/RESULT_METRIC_NAME=LeftStepWidth 
 +! /RESULT_METRIC_FOLDER=PROCESSED 
 +! /GENERATE_MEAN_AND_STDDEV=TRUE 
 +! /APPEND_TO_EXISTING_VALUES=FALSE 
 +/GENERATE_VECTOR_LENGTH_METRIC=TRUE 
 +;
 +
 +! Calculate RightStepWidth by taking cross product of RightStep vector and StrideVectors_MEAN
 +! Generate Mean and STD DEV
 +Metric_Cross_Product 
 +! /METRIC1_FILE= 
 +/METRIC1_NAME=RightStep 
 +! /METRIC1_FOLDER=PROCESSED 
 +/METRIC2_FILE=GLOBAL 
 +/METRIC2_NAME=StrideVectors_MEAN 
 +! /METRIC2_FOLDER=PROCESSED 
 +! /DIVIDE_BY_METRIC2_LENGTH=TRUE 
 +/RESULT_METRIC_NAME=RightStepWidth 
 +! /RESULT_METRIC_FOLDER=PROCESSED 
 +! /GENERATE_MEAN_AND_STDDEV=TRUE 
 +! /APPEND_TO_EXISTING_VALUES=FALSE 
 +/GENERATE_VECTOR_LENGTH_METRIC=TRUE 
 +
 +</code>
 +
 +The **METRIC:PROCESSED** folder should now contain several new metrics including 3 values (vector, mean, and std dev) for right and left step width. The results should look similar to below:
  
 +{{:visual3d:documentation:pipeline:metric_commands:left_step_width.png?600|}}{{:visual3d:documentation:pipeline:metric_commands:left_step_width_mean.png?600|}}
  
 +A more complete example including dot products is available [[visual3d:documentation:pipeline:signal_commands:mimicking_temporal_distance_command|here]]. 
visual3d/documentation/pipeline/metric_commands/metric_cross_product.1721158192.txt.gz · Last modified: 2024/07/16 19:29 by sgranger