LSTM review

This commit is contained in:
davidpagnon 2024-01-19 20:03:35 +01:00
parent f24f1515f4
commit 5f75e29f20
1733 changed files with 670969 additions and 29147 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,352 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<OpenSimDocument Version="40000">
<MarkerSet name="markerset">
<objects>
<Marker name="r.ASIS_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.028000000000000001 0.01 0.128</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L.ASIS_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.028000000000000001 0.01 -0.128</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r.PSIS_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.154 0.025000000000000001 0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L.PSIS_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.154 0.025000000000000001 -0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_knee_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0080000000000000002 -0.40400000000000003 0.055</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_mknee_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.010999999999999999 -0.40100000000000002 -0.055</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_ankle_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.02 -0.38500000000000001 0.052999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_mankle_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0060000000000000001 -0.38 -0.037999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_toe_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.18684400000000001 0.0083665300000000005 0.0052662100000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_5meta_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.14000000000000001 0.0050000000000000001 0.065000000000000002</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_calc_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.032161500000000003 0.032569300000000002 -0.011169500000000001</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_knee_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0080000000000000002 -0.40400000000000003 -0.055</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_mknee_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.010999999999999999 -0.40100000000000002 0.055</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_ankle_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.02 -0.38500000000000001 -0.052999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_mankle_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0060000000000000001 -0.38 0.037999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_toe_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.18684400000000001 0.0083665300000000005 -0.00526621</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_calc_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.0321615 0.0325693 0.0111695</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_5meta_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.14000000000000001 0.0050000000000000001 -0.065000000000000002</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_shoulder_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0 0.41799999999999998 0.14199999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_shoulder_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0 0.41799999999999998 -0.14199999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="C7_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.080000000000000002 0.41999999999999998 0.0030000000000000001</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_lelbow_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/humerus_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.014999999999999999 -0.28000000000000003 0.040000000000000001</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="r_melbow_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/humerus_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0022499999999999998 -0.28599999999999998 -0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="r_lwrist_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/radius_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.00050000000000000001 -0.22500000000000001 0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="r_mwrist_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/radius_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.021999999999999999 -0.22500000000000001 -0.021999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="L_lelbow_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/humerus_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.014999999999999999 -0.28000000000000003 -0.040000000000000001</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="L_melbow_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/humerus_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0022499999999999998 -0.28599999999999998 0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="L_lwrist_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/radius_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.00050000000000000001 -0.22500000000000001 -0.050000000000000003</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="L_mwrist_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/radius_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.021999999999999999 -0.22500000000000001 0.021999999999999999</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>true</fixed>
</Marker>
<Marker name="r_thigh1_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.09 -0.15 0.07</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_thigh2_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.055 -0.25 0.085</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_thigh3_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.02 -0.14 0.1</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_thigh1_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.09 -0.15 -0.07</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_thigh2_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.055 -0.25 -0.085</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_thigh3_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.02 -0.14 -0.1</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_sh1_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0 -0.115 0.07</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_sh2_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.026 -0.23 0.08</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="r_sh3_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.05 -0.22 0.08</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_sh1_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.0 -0.115 -0.07</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_sh2_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>0.026 -0.23 -0.08</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="L_sh3_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.05 -0.22 -0.08</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="RHJC_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.056276 -0.078490000000000004 0.077259999999999995</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
<Marker name="LHJC_study">
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
<!--The fixed location of the station expressed in its parent frame.-->
<location>-0.056276 -0.078490000000000004 -0.077259999999999995</location>
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
<fixed>false</fixed>
</Marker>
</objects>
<groups />
</MarkerSet>
</OpenSimDocument>

View File

@ -26,13 +26,9 @@ frame_range = [] # For example [10,300], or [] for all frames
exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
participant_height = 1.7 # m
participant_mass = 70 # kg
# Take heart, calibration is not that complicated once you get the hang of it!
[calibration]
calibration_type = 'convert' # 'convert' or 'calculate'
@ -140,7 +136,7 @@ make_c3d = false # save triangulated data in c3d format in addition to trc # Com
[filtering]
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
display_figures = false # true or false (lowercase)
display_figures = true # true or false (lowercase)
[filtering.butterworth]
order = 4
@ -160,6 +156,12 @@ display_figures = false # true or false (lowercase)
kernel_size = 9
[markerAugmentation]
## Only works on BODY_25 and BODY_25B models
participant_height = 1.7 # m
participant_mass = 70 # kg
[opensim]
static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -27,10 +27,6 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
@ -139,9 +135,9 @@
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
# [filtering]
[filtering]
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
# display_figures = true # true or false (lowercase)
display_figures = false # true or false (lowercase)
# [filtering.butterworth]
# order = 4
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -27,10 +27,6 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -22,6 +22,7 @@ def test_workflow():
Pose2Sim.personAssociation(config_dict)
Pose2Sim.triangulation(config_dict)
Pose2Sim.filtering(config_dict)
Pose2Sim.markerAugmentation(config_dict)
# Pose2Sim.kinematics(config_dict)
@ -35,4 +36,5 @@ def test_workflow():
Pose2Sim.personAssociation(config_dict)
Pose2Sim.triangulation(config_dict)
Pose2Sim.filtering(config_dict)
Pose2Sim.markerAugmentation(config_dict)
# Pose2Sim.kinematics(config_dict)

View File

@ -10,7 +10,7 @@
# Config.toml file of the level above. This way, you can set global
# instructions for the Session and alter them for specific Participants or Trials.
#
# If you wish to overwrite a parameter for a specific trial or participant,
# If you wish to overwrite a parameter for a specific trial or participant,
# edit its Config.toml file by uncommenting its key (e.g., [project])
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
# [filtering.butterworth] and set cut_off_frequency = 10, etc.
@ -26,13 +26,9 @@ frame_range = [] # For example [10,300], or [] for all frames
exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
participant_height = 1.7 # m
participant_mass = 70 # kg
# Take heart, calibration is not that complicated once you get the hang of it!
[calibration]
calibration_type = 'convert' # 'convert' or 'calculate'
@ -94,7 +90,7 @@ calibration_type = 'convert' # 'convert' or 'calculate'
[pose]
pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII
#With mediapipe: BLAZEPOSE.
#With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
#With deeplabcut: CUSTOM. See example at the end of the file.
@ -122,7 +118,7 @@ single_person = true # false for multi-person analysis (not supported yet), true
tracked_keypoint = 'Neck' # If the neck is not detected by the pose_model, check skeleton.py
# and choose a stable point for tracking the person of interest (e.g., 'right_shoulder' with BLAZEPOSE)
reproj_error_threshold_association = 20 # px
likelihood_error_threshold_association = 0.2
likelihood_threshold_association = 0.2
[triangulation]
@ -130,17 +126,17 @@ reproj_error_threshold_triangulation = 15 # px
likelihood_threshold_triangulation = 0.3
min_cameras_for_triangulation = 2
interpolation = 'cubic' #linear, slinear, quadratic, cubic, or none
# 'none' if you don't want to interpolate missing points
# 'none' if you don't want to interpolate missing points
interp_if_gap_smaller_than = 10 # do not interpolate bigger gaps
show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
# handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower
# undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower
undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low
make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
[filtering]
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
display_figures = false # true or false (lowercase)
display_figures = true # true or false (lowercase)
[filtering.butterworth]
order = 4
@ -160,8 +156,14 @@ display_figures = false # true or false (lowercase)
kernel_size = 9
[markerAugmentation]
## Only works on BODY_25 and BODY_25B models
participant_height = 1.7 # m
participant_mass = 70 # kg
[opensim]
static_trial = ['S01_P00_Participant0/S01_P00_T00_StaticTrial']
static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
@ -169,17 +171,17 @@ opensim_bin_path = 'C:\OpenSim 4.4\bin'
## CUSTOM skeleton, if you trained your own DeepLabCut model for example.
## Make sure the node ids correspond to the column numbers of the 2D pose file, starting from zero.
##
## If you want to perform inverse kinematics, you will also need to create an OpenSim model
## and add to its markerset the location where you expect the triangulated keypoints to be detected.
##
## In this example, CUSTOM reproduces the BODY_25B skeleton (default skeletons are stored in skeletons.py).
## You can create as many custom skeletons as you want, just add them further down and rename them.
##
## Check your model hierarchy with: for pre, _, node in RenderTree(model):
## print(f'{pre}{node.name} id={node.id}')
# CUSTOM skeleton, if you trained your own DeepLabCut model for example.
# Make sure the node ids correspond to the column numbers of the 2D pose file, starting from zero.
#
# If you want to perform inverse kinematics, you will also need to create an OpenSim model
# and add to its markerset the location where you expect the triangulated keypoints to be detected.
#
# In this example, CUSTOM reproduces the BODY_25B skeleton (default skeletons are stored in skeletons.py).
# You can create as many custom skeletons as you want, just add them further down and rename them.
#
# Check your model hierarchy with: for pre, _, node in RenderTree(model):
# print(f'{pre}{node.name} id={node.id}')
[pose.CUSTOM]
name = "CHip"
id = "None"

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -26,13 +26,9 @@
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
## Only taken into account if want to use marker augmentation
# participant_height = 1.7 # m
# participant_mass = 70 # kg
## Take heart, calibration is not that complicated once you get the hang of it!
# [calibration]
# calibration_type = 'convert' # 'convert' or 'calculate'
@ -161,6 +157,12 @@
# kernel_size = 9
# [markerAugmentation]
# ## Only works on BODY_25 and BODY_25B models
# participant_height = 1.7 # m
# participant_mass = 70 # kg
# [opensim]
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);

View File

@ -1,190 +1,191 @@
from . import utilsDataman
import numpy as np
def TRC2numpy(pathFile, markers,rotation=None):
# rotation is a dict, eg. {'y':90} with axis, angle for rotation
trc_file = utilsDataman.TRCFile(pathFile)
time = trc_file.time
num_frames = time.shape[0]
data = np.zeros((num_frames, len(markers)*3))
if rotation != None:
for axis,angle in rotation.items():
trc_file.rotate(axis,angle)
for count, marker in enumerate(markers):
data[:,3*count:3*count+3] = trc_file.marker(marker)
this_dat = np.empty((num_frames, 1))
this_dat[:, 0] = time
data_out = np.concatenate((this_dat, data), axis=1)
return data_out
def numpy2TRC(f, data, headers, fc=50.0, t_start=0.0, units="m"):
header_mapping = {}
for count, header in enumerate(headers):
header_mapping[count+1] = header
# Line 1.
f.write('PathFileType 4\t(X/Y/Z) %s\n' % os.getcwd())
# Line 2.
f.write('DataRate\tCameraRate\tNumFrames\tNumMarkers\t'
'Units\tOrigDataRate\tOrigDataStartFrame\tOrigNumFrames\n')
num_frames=data.shape[0]
num_markers=len(header_mapping.keys())
# Line 3.
f.write('%.1f\t%.1f\t%i\t%i\t%s\t%.1f\t%i\t%i\n' % (
fc, fc, num_frames,
num_markers, units, fc,
1, num_frames))
# Line 4.
f.write("Frame#\tTime\t")
for key in sorted(header_mapping.keys()):
f.write("%s\t\t\t" % format(header_mapping[key]))
# Line 5.
f.write("\n\t\t")
for imark in np.arange(num_markers) + 1:
f.write('X%i\tY%s\tZ%s\t' % (imark, imark, imark))
f.write('\n')
# Line 6.
f.write('\n')
for frame in range(data.shape[0]):
f.write("{}\t{:.8f}\t".format(frame+1,(frame)/fc+t_start)) # opensim frame labeling is 1 indexed
for key in sorted(header_mapping.keys()):
f.write("{:.5f}\t{:.5f}\t{:.5f}\t".format(data[frame,0+(key-1)*3], data[frame,1+(key-1)*3], data[frame,2+(key-1)*3]))
f.write("\n")
def getOpenPoseMarkerNames():
markerNames = ["Nose", "Neck", "RShoulder", "RElbow", "RWrist",
"LShoulder", "LElbow", "LWrist", "midHip", "RHip",
"RKnee", "RAnkle", "LHip", "LKnee", "LAnkle", "REye",
"LEye", "REar", "LEar", "LBigToe", "LSmallToe",
"LHeel", "RBigToe", "RSmallToe", "RHeel"]
return markerNames
def getOpenPoseFaceMarkers():
faceMarkerNames = ['Nose', 'REye', 'LEye', 'REar', 'LEar']
markerNames = getOpenPoseMarkerNames()
idxFaceMarkers = [markerNames.index(i) for i in faceMarkerNames]
return faceMarkerNames, idxFaceMarkers
def getOpenPoseMarkers_fullBody():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe", "RElbow", "LElbow", "RWrist", "LWrist"]
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
"L.PSIS_study", "r_knee_study", "L_knee_study",
"r_mknee_study", "L_mknee_study", "r_ankle_study",
"L_ankle_study", "r_mankle_study", "L_mankle_study",
"r_calc_study", "L_calc_study", "r_toe_study",
"L_toe_study", "r_5meta_study", "L_5meta_study",
"r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study",
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
"r_sh1_study", "r_sh2_study", "r_sh3_study",
"L_sh1_study", "L_sh2_study", "L_sh3_study",
"RHJC_study", "LHJC_study"]
return feature_markers, response_markers
def getOpenPoseMarkers_lowerExtremity():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe"]
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
"L.PSIS_study", "r_knee_study", "L_knee_study",
"r_mknee_study", "L_mknee_study", "r_ankle_study",
"L_ankle_study", "r_mankle_study", "L_mankle_study",
"r_calc_study", "L_calc_study", "r_toe_study",
"L_toe_study", "r_5meta_study", "L_5meta_study",
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
"r_sh1_study", "r_sh2_study", "r_sh3_study",
"L_sh1_study", "L_sh2_study", "L_sh3_study",
"RHJC_study", "LHJC_study"]
return feature_markers, response_markers
# Different order of markers compared to getOpenPoseMarkers_lowerExtremity
def getOpenPoseMarkers_lowerExtremity2():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe"]
response_markers = [
'r.ASIS_study', 'L.ASIS_study', 'r.PSIS_study',
'L.PSIS_study', 'r_knee_study', 'r_mknee_study',
'r_ankle_study', 'r_mankle_study', 'r_toe_study',
'r_5meta_study', 'r_calc_study', 'L_knee_study',
'L_mknee_study', 'L_ankle_study', 'L_mankle_study',
'L_toe_study', 'L_calc_study', 'L_5meta_study',
'r_shoulder_study', 'L_shoulder_study', 'C7_study',
'r_thigh1_study', 'r_thigh2_study', 'r_thigh3_study',
'L_thigh1_study', 'L_thigh2_study', 'L_thigh3_study',
'r_sh1_study', 'r_sh2_study', 'r_sh3_study', 'L_sh1_study',
'L_sh2_study', 'L_sh3_study', 'RHJC_study', 'LHJC_study']
return feature_markers, response_markers
def getMarkers_upperExtremity_pelvis():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RElbow", "LElbow",
"RWrist", "LWrist"]
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study"]
return feature_markers, response_markers
def getMarkers_upperExtremity_noPelvis():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
"LWrist"]
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study"]
return feature_markers, response_markers
# Different order of markers compared to getMarkers_upperExtremity_noPelvis.
def getMarkers_upperExtremity_noPelvis2():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
"LWrist"]
response_markers = ["r_lelbow_study", "r_melbow_study", "r_lwrist_study",
"r_mwrist_study", "L_lelbow_study", "L_melbow_study",
"L_lwrist_study", "L_mwrist_study"]
return feature_markers, response_markers
from . import utilsDataman
import numpy as np
import os
def TRC2numpy(pathFile, markers,rotation=None):
# rotation is a dict, eg. {'y':90} with axis, angle for rotation
trc_file = utilsDataman.TRCFile(pathFile)
time = trc_file.time
num_frames = time.shape[0]
data = np.zeros((num_frames, len(markers)*3))
if rotation != None:
for axis,angle in rotation.items():
trc_file.rotate(axis,angle)
for count, marker in enumerate(markers):
data[:,3*count:3*count+3] = trc_file.marker(marker)
this_dat = np.empty((num_frames, 1))
this_dat[:, 0] = time
data_out = np.concatenate((this_dat, data), axis=1)
return data_out
def numpy2TRC(f, data, headers, fc=50.0, t_start=0.0, units="m"):
header_mapping = {}
for count, header in enumerate(headers):
header_mapping[count+1] = header
# Line 1.
f.write('PathFileType 4\t(X/Y/Z) %s\n' % os.getcwd())
# Line 2.
f.write('DataRate\tCameraRate\tNumFrames\tNumMarkers\t'
'Units\tOrigDataRate\tOrigDataStartFrame\tOrigNumFrames\n')
num_frames=data.shape[0]
num_markers=len(header_mapping.keys())
# Line 3.
f.write('%.1f\t%.1f\t%i\t%i\t%s\t%.1f\t%i\t%i\n' % (
fc, fc, num_frames,
num_markers, units, fc,
1, num_frames))
# Line 4.
f.write("Frame#\tTime\t")
for key in sorted(header_mapping.keys()):
f.write("%s\t\t\t" % format(header_mapping[key]))
# Line 5.
f.write("\n\t\t")
for imark in np.arange(num_markers) + 1:
f.write('X%i\tY%s\tZ%s\t' % (imark, imark, imark))
f.write('\n')
# Line 6.
f.write('\n')
for frame in range(data.shape[0]):
f.write("{}\t{:.8f}\t".format(frame+1,(frame)/fc+t_start)) # opensim frame labeling is 1 indexed
for key in sorted(header_mapping.keys()):
f.write("{:.5f}\t{:.5f}\t{:.5f}\t".format(data[frame,0+(key-1)*3], data[frame,1+(key-1)*3], data[frame,2+(key-1)*3]))
f.write("\n")
def getOpenPoseMarkerNames():
markerNames = ["Nose", "Neck", "RShoulder", "RElbow", "RWrist",
"LShoulder", "LElbow", "LWrist", "midHip", "RHip",
"RKnee", "RAnkle", "LHip", "LKnee", "LAnkle", "REye",
"LEye", "REar", "LEar", "LBigToe", "LSmallToe",
"LHeel", "RBigToe", "RSmallToe", "RHeel"]
return markerNames
def getOpenPoseFaceMarkers():
faceMarkerNames = ['Nose', 'REye', 'LEye', 'REar', 'LEar']
markerNames = getOpenPoseMarkerNames()
idxFaceMarkers = [markerNames.index(i) for i in faceMarkerNames]
return faceMarkerNames, idxFaceMarkers
def getOpenPoseMarkers_fullBody():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe", "RElbow", "LElbow", "RWrist", "LWrist"]
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
"L.PSIS_study", "r_knee_study", "L_knee_study",
"r_mknee_study", "L_mknee_study", "r_ankle_study",
"L_ankle_study", "r_mankle_study", "L_mankle_study",
"r_calc_study", "L_calc_study", "r_toe_study",
"L_toe_study", "r_5meta_study", "L_5meta_study",
"r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study",
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
"r_sh1_study", "r_sh2_study", "r_sh3_study",
"L_sh1_study", "L_sh2_study", "L_sh3_study",
"RHJC_study", "LHJC_study"]
return feature_markers, response_markers
def getOpenPoseMarkers_lowerExtremity():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe"]
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
"L.PSIS_study", "r_knee_study", "L_knee_study",
"r_mknee_study", "L_mknee_study", "r_ankle_study",
"L_ankle_study", "r_mankle_study", "L_mankle_study",
"r_calc_study", "L_calc_study", "r_toe_study",
"L_toe_study", "r_5meta_study", "L_5meta_study",
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
"r_sh1_study", "r_sh2_study", "r_sh3_study",
"L_sh1_study", "L_sh2_study", "L_sh3_study",
"RHJC_study", "LHJC_study"]
return feature_markers, response_markers
# Different order of markers compared to getOpenPoseMarkers_lowerExtremity
def getOpenPoseMarkers_lowerExtremity2():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
"RBigToe", "LBigToe"]
response_markers = [
'r.ASIS_study', 'L.ASIS_study', 'r.PSIS_study',
'L.PSIS_study', 'r_knee_study', 'r_mknee_study',
'r_ankle_study', 'r_mankle_study', 'r_toe_study',
'r_5meta_study', 'r_calc_study', 'L_knee_study',
'L_mknee_study', 'L_ankle_study', 'L_mankle_study',
'L_toe_study', 'L_calc_study', 'L_5meta_study',
'r_shoulder_study', 'L_shoulder_study', 'C7_study',
'r_thigh1_study', 'r_thigh2_study', 'r_thigh3_study',
'L_thigh1_study', 'L_thigh2_study', 'L_thigh3_study',
'r_sh1_study', 'r_sh2_study', 'r_sh3_study', 'L_sh1_study',
'L_sh2_study', 'L_sh3_study', 'RHJC_study', 'LHJC_study']
return feature_markers, response_markers
def getMarkers_upperExtremity_pelvis():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RElbow", "LElbow",
"RWrist", "LWrist"]
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study"]
return feature_markers, response_markers
def getMarkers_upperExtremity_noPelvis():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
"LWrist"]
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
"r_mwrist_study", "L_mwrist_study"]
return feature_markers, response_markers
# Different order of markers compared to getMarkers_upperExtremity_noPelvis.
def getMarkers_upperExtremity_noPelvis2():
feature_markers = [
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
"LWrist"]
response_markers = ["r_lelbow_study", "r_melbow_study", "r_lwrist_study",
"r_mwrist_study", "L_lelbow_study", "L_melbow_study",
"L_lwrist_study", "L_mwrist_study"]
return feature_markers, response_markers

Some files were not shown because too many files have changed in this diff Show More