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 [2025/09/18 15:14] wikisysopvisual3d: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 4: Line 4:
 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 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.
  
-{{:MetricCrossProductDlg.png}}+====Pipeline Command==== 
 + 
 +The command, as seen in the pipeline workshop, is below.
  
 <code> <code>
 Metric_Cross_Product Metric_Cross_Product
 +! /RESULT_FILE=
 +! /RESULT_METRIC_FOLDER=PROCESSED
 /RESULT_METRIC_NAME= /RESULT_METRIC_NAME=
-! /RESULT_METRIC_FOLDER= 
 ! /METRIC1_FILE= ! /METRIC1_FILE=
 +! /METRIC1_FOLDER=PROCESSED
 /METRIC1_NAME= /METRIC1_NAME=
-! /METRIC1_FOLDER= 
 ! /METRIC2_FILE= ! /METRIC2_FILE=
-/METRIC2_NAME=  +/METRIC2_FOLDER=PROCESSED 
-/METRIC2_FOLDER=  +/METRIC2_NAME
-! /DIVIDE_BY_METRIC2_LENGTH=  +! /DIVIDE_BY_METRIC2_LENGTH=TRUE 
-! /GENERATE_MEAN_AND_STDDEV=(True or False)Generate the mean and standard deviation for all of the metrics created  +! /GENERATE_MEAN_AND_STDDEV=TRUE 
-! /APPEND_TO_EXISTING_VALUES=(True or False)Append this list of metrics to an existing metric of the same result name  +! /APPEND_TO_EXISTING_VALUES=FALSE 
-! /GENERATE_VECTOR_LENGTH_METRIC=(True or False) +! /GENERATE_VECTOR_LENGTH_METRIC=FALSE 
-! /RETAIN_NO_DATA_VALUES=(True or False)+! /RETAIN_NO_DATA_VALUES=FALSE
 ; ;
 </code> </code>
Line 37: Line 40:
 |**APPEND_TO_EXISTING_VALUES**|**(True or False)Append this list of metrics to an existing metric of the same result name**| |**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**| |**GENERATE_VECTOR_LENGTH_METRIC**|**(True or False)Generate metric value for vector length**|
-|**RETAIN_NO_DATA_VALUES**|**(True or False)**|+|**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==== ====Dialog====
Line 60: Line 63:
 The results are concatenated to an existing signal. The results are concatenated to an existing signal.
  
-====Examples====+====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.
  
-===Simple example===+First all files are selected as active and key gait events are defined for each trial:
  
-Showing functionality of the command, using a diagram possibly to show output.+<code> 
 +Select_Active_File  
 +/FILE_NAME=ALL_FILES  
 +;
  
-===Complex example===+Automatic_Gait_Events 
 +! /FRAME_WINDOW=
 +! /USE_TPR=TRUE 
 +! /TPR_EVENT_INSTANCE=
 +
 +</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>
  
-Combine with other commands and show step-by-step process for frequent use case+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.1758208468.txt.gz · Last modified: 2025/09/18 15:14 by wikisysop