c3d-parser 0.4.0__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. c3d_parser-1.0.2/PKG-INFO +226 -0
  2. c3d_parser-1.0.2/README.md +204 -0
  3. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/pyproject.toml +1 -1
  4. c3d_parser-1.0.2/requirements.txt +13 -0
  5. c3d_parser-1.0.2/src/c3d_parser/__init__.py +2 -0
  6. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/c3d_parser.py +110 -48
  7. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/osim.py +41 -14
  8. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/osim_resources/external_loads_template.xml +2 -2
  9. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/logging.py +34 -1
  10. c3d_parser-1.0.2/src/c3d_parser/view/dialogs/delete_marker_set_dialog.py +52 -0
  11. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/dialogs/marker_set_dialog.py +12 -0
  12. c3d_parser-1.0.2/src/c3d_parser/view/dialogs/options_dialog.py +142 -0
  13. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/main_window.py +218 -46
  14. c3d_parser-1.0.2/src/c3d_parser/view/ui/ui_delete_marker_set_dialog.py +87 -0
  15. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/ui/ui_main_window.py +112 -12
  16. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/ui/ui_marker_set_dialog.py +1 -1
  17. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/ui/ui_marker_set_import_dialog.py +3 -3
  18. c3d_parser-1.0.2/src/c3d_parser/view/ui/ui_options_dialog.py +307 -0
  19. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/widgets.py +11 -1
  20. c3d_parser-1.0.2/src/c3d_parser.egg-info/PKG-INFO +226 -0
  21. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser.egg-info/SOURCES.txt +2 -0
  22. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser.egg-info/entry_points.txt +1 -1
  23. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser.egg-info/requires.txt +2 -2
  24. c3d_parser-0.4.0/PKG-INFO +0 -124
  25. c3d_parser-0.4.0/README.md +0 -102
  26. c3d_parser-0.4.0/requirements.txt +0 -11
  27. c3d_parser-0.4.0/src/c3d_parser/__init__.py +0 -2
  28. c3d_parser-0.4.0/src/c3d_parser/view/dialogs/options_dialog.py +0 -62
  29. c3d_parser-0.4.0/src/c3d_parser/view/ui/ui_options_dialog.py +0 -136
  30. c3d_parser-0.4.0/src/c3d_parser.egg-info/PKG-INFO +0 -124
  31. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/LICENSE +0 -0
  32. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/setup.cfg +0 -0
  33. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/application.py +0 -0
  34. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/c3d_patch.py +0 -0
  35. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/osim_resources/ik_task_set.xml +0 -0
  36. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/core/utils.py +0 -0
  37. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/general.py +0 -0
  38. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/AUC.json +0 -0
  39. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/FMC.json +0 -0
  40. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/MH.json +0 -0
  41. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/QCMAS.json +0 -0
  42. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/RBWH.json +0 -0
  43. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/RCH.json +0 -0
  44. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/settings/marker_maps/Sydney.json +0 -0
  45. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/splash_rc.py +0 -0
  46. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/splashscreen.py +0 -0
  47. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/dialogs/about_dialog.py +0 -0
  48. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/dialogs/marker_set_import_dialog.py +0 -0
  49. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/ui/resources_rc.py +0 -0
  50. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser/view/utils.py +0 -0
  51. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser.egg-info/dependency_links.txt +0 -0
  52. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/src/c3d_parser.egg-info/top_level.txt +0 -0
  53. {c3d_parser-0.4.0 → c3d_parser-1.0.2}/tests/test_parser.py +0 -0
@@ -0,0 +1,226 @@
1
+ Metadata-Version: 2.4
2
+ Name: c3d-parser
3
+ Version: 1.0.2
4
+ Summary: C3D parser for gait data harmonisation.
5
+ Author-email: Timothy Salemink <tim.nicolas@outlook.com>, Sally Jack <sallyjaack@gmail.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Repository, https://github.com/tsalemink/C3D-parser
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: scipy
11
+ Requires-Dist: numpy==1.26.4
12
+ Requires-Dist: pandas
13
+ Requires-Dist: c3d==0.5.2
14
+ Requires-Dist: trc-data-reader
15
+ Requires-Dist: opensim-model-creator>=0.5.0
16
+ Requires-Dist: PySide6
17
+ Requires-Dist: matplotlib
18
+ Requires-Dist: mplcursors
19
+ Requires-Dist: pyvistaqt
20
+ Requires-Dist: ll-visualiser>=0.3.0
21
+ Dynamic: license-file
22
+
23
+ # C3D-Parser
24
+
25
+ The C3D-Parser is a Python desktop application for gait analysis.
26
+
27
+ Given a C3D motion capture session, the C3D-Parser generates a personalised OpenSim lower-limb
28
+ model using an articulated shape model. It then uses this model to run inverse kinematics,
29
+ inverse dynamics, and spatio-temporal analysis using the OpenSim API.
30
+
31
+ The entire process runs locally and offline.
32
+
33
+
34
+ ## Contents
35
+
36
+ - [Installation](#installation)
37
+ - [Usage](#usage)
38
+ - [Options](#options)
39
+ - [Custom Marker Sets](#custom-marker-sets)
40
+ - [Input Requirements](#input-requirements)
41
+ - [Feature Requests and Bug Reports](#feature-requests-and-bug-reports)
42
+
43
+
44
+ ## Installation
45
+
46
+ #### Installing the Windows executable (recommended):
47
+
48
+ The latest release of the C3D-Parser includes a Windows installer for setting up an executable
49
+ version of the application. Simply download and run _C3D-Parser-{release-version}.exe_ for any
50
+ release in the GitHub repository [_Releases_](https://github.com/tsalemink/C3D-parser/releases).
51
+
52
+ #### Installing the Python package:
53
+
54
+ It is recommended that you create a new virtual environment before installing this package, to
55
+ avoid any potential dependency conflicts with the packages already installed in your Python
56
+ environment.
57
+
58
+ If you intend to use this package directly from your Python environment you will also need to
59
+ install the OpenSim Python distribution yourself. This can be installed using Conda, or by building
60
+ the Python bindings from source. Development and testing have been done using Python 3.11 and
61
+ OpenSim 4.5, so we recommend installing those releases if possible. Though most recent Python and
62
+ OpenSim versions should work as well.
63
+
64
+ After activating your Python environment and installing OpenSim you can run
65
+ `pip install c3d-parser` to install the application. It can then be started by running the command
66
+ `c3d_parser`.
67
+
68
+
69
+ ## Usage
70
+
71
+ **Setup**
72
+ Before you can start processing a gait session, you need to define your lab's marker-set using the
73
+ "Lab" drop-down on the main-window. If this is your first time using the C3D-Parser please read
74
+ the section on [custom marker sets](#custom-marker-sets).
75
+
76
+
77
+ **1. Select Input Session**
78
+ Select your gait session using the "Input" line-edit or associated directory chooser. Each trial
79
+ in the session will be automatically classified as "Static" or "Dynamic", but you can override
80
+ these classifications by right-clicking on the item in question. You can exclude specific trials
81
+ from the analysis by using the check-boxes provided.
82
+
83
+ <p align="center">
84
+ <img src="res/images/Inputs.png" alt="Inputs Screenshot"/>
85
+ </p>
86
+
87
+ You can also specify an "Output" directory if you wish. By default, an output structure will be
88
+ created in your input directory.
89
+
90
+
91
+ **2. Confirm Anthropometric Data**
92
+ Next, check the subject's anthropometric measurements. This information should be automatically
93
+ filled using the metadata in your static C3D file. Confirm these values are accurate and fill in
94
+ any gaps.
95
+
96
+ <p align="center">
97
+ <img src="res/images/Anthropometrics.png" alt="Anthropometrics Screenshot"/>
98
+ </p>
99
+
100
+
101
+ **3. Processing**
102
+ Click "Process Data" to begin.
103
+
104
+ The application will create an OpenSim model using your input data and will run IK and ID. The
105
+ results from IK and ID will be displayed in the "Kinematic" and "Kinetic" tabs respectively.
106
+ The visualisation tab displays the generated model and the predicted landmark positions, comparing
107
+ these against the (skin-padding adjusted) experimental marker positions.
108
+
109
+ <p align="center">
110
+ <img src="res/images/Visualiser.png" alt="Visualiser Screenshot"/>
111
+ </p>
112
+
113
+
114
+ **4. Quality Control**
115
+
116
+ Check that the model looks sensible and that the differences in marker positions aren't too large.
117
+ Note that the width values provided here are between bone-surface landmarks, so should be slightly
118
+ smaller than your experimental measurements.
119
+
120
+ The last thing to do is to decide which gait cycles you wish to include in your final outputs.
121
+ By default, your results will include the data produced for every gait cycle in your session.
122
+ If it looks like there are cycles missing, please read the section on
123
+ [input requirements](#input-requirements).
124
+
125
+ To exclude a gait cycle from your results: click on the curve, right-click the plot area, and
126
+ select "Exclude Selected Cycles". Similarly, it is also possible to exclude/include entire
127
+ sections of data for specific trials by right-clicking on the trial name in the list of trials.
128
+
129
+ <p align="center">
130
+ <img src="res/images/Exclusion_01.png" alt="Exclusion 01"/>
131
+ <img src="res/images/Exclusion_02.png" alt="Exclusion 02"/>
132
+ </p>
133
+ <p align="center">
134
+ <img src="res/images/Exclusion_03.png" alt="Exclusion 03"/>
135
+ <img src="res/images/Exclusion_04.png" alt="Exclusion 04"/>
136
+ </p>
137
+
138
+ The "Spatio-temporal" tab supports exclusions in the same manner.
139
+
140
+ Click "Finalise Outputs" to produce the final results.
141
+
142
+
143
+ ## Options
144
+
145
+ User settings are available under _View_ -> _Options_.
146
+ All settings are retained after you close the application.
147
+
148
+ <p align="center">
149
+ <img src="res/images/Options.png" alt="Options Screenshot"/>
150
+ </p>
151
+
152
+ **File**
153
+ _Input Data Directory_ and _Output Data Directory_ define the default starting directories for the
154
+ _Input_ and _Output_ directory choosers on the main window.
155
+
156
+ **Plots**
157
+ _Line Width_ refers to the width of the lines displayed on the graphs in the visualisation tabs.
158
+
159
+ Plot colours can be adjusted using colour hex codes. Please ensure the selection colour is
160
+ distinct from the left and right side colours.
161
+
162
+ **OpenSim Model**
163
+ After creating the initial OpenSim model, an optional knee axis optimisation can be run to refine
164
+ the model prior to analysis. This process is time-consuming and can be disabled for testing
165
+ purposes.
166
+
167
+ **Filtering**
168
+ If the filtering check boxes are selected, the C3D-Parser will filter (8Hz Butterworth low-pass)
169
+ the TRC and GRF inputs before running the rest of the workflow. If your inputs are pre-filtered,
170
+ please deselect these options.
171
+
172
+ **Inverse Kinematics**
173
+ If you wish to define custom marker weights, you may do so by providing your own IK task set file.
174
+ Please follow the format used in the C3D-Parser
175
+ [default IK task set](src/c3d_parser/core/osim_resources/ik_task_set.xml).
176
+
177
+
178
+ ## Custom Marker Sets
179
+
180
+ The application pre-defines a number of lab-specific marker sets. If the marker sets we provide do
181
+ not fit your needs you can adjust one of the existing marker sets or create a new one from scratch
182
+ using the custom marker set dialog under "Marker" -> "Custom Marker Set".
183
+
184
+ <p align="center">
185
+ <img src="res/images/Custom_Marker_Set.png" alt="Custom Marker Set Screenshot"/>
186
+ </p>
187
+
188
+ You can import an initial mapping from one of the existing marker sets using the "Import" button.
189
+
190
+ We recommend that you specify your input session directory (using the "Input" line-edit in the main
191
+ window) before opening the custom marker set dialog, this way the drop-down menu associated with
192
+ each required marker will be populated with the list of markers defined in your static trial.
193
+ Otherwise, you will have to type in the marker names manually, which is time-consuming and prone
194
+ to errors. The dialog will also attempt to match any commonly named markers that it identifies in
195
+ your static trial.
196
+
197
+ Your custom marker set must define: "ASI", "KNE", "ANK", "MED", "HEE", either "PSI" or "SACR",
198
+ either "KNEM" or "KAX".
199
+
200
+
201
+ ## Input Requirements
202
+
203
+ To be able to create an OpenSim model from your static C3D file, it must contain either: medial
204
+ knee markers; or KAD markers as well as knee-width values in the C3D metadata PROCESSING section
205
+ (so that we can calculate virtual positions for the medial markers based on the lateral knee marker
206
+ positions).
207
+
208
+ It is recommended that your static C3D file defines the subject's height and weight in the metadata
209
+ PROCESSING section, otherwise you will be prompted for this information.
210
+
211
+ Additionally, to be able to cover a wide range of inputs whilst keep the UI as minimal as possible,
212
+ we have had to adopt a fairly strict policy on what is considered a 'valid' gait event. If a foot
213
+ strike occurs over multiple force plates, we will be unable to use the GRF data associated with
214
+ that stance phase. This will also affect which gait cycles are considered valid when normalising
215
+ the results from ID.
216
+
217
+
218
+ ## Feature Requests and Bug Reports
219
+
220
+ If you would like to suggest a new feature for this application or report a bug you have discovered, please create a
221
+ "New Issue" using the appropriate template found in this repository's
222
+ [_Issues_](https://github.com/tsalemink/C3D-parser/issues) page. Please check that your request does not match any
223
+ existing issues.
224
+
225
+ Ongoing development of features and bug fixes can be tracked using the development
226
+ [_Project_](https://github.com/users/tsalemink/projects/3) for this repository.
@@ -0,0 +1,204 @@
1
+ # C3D-Parser
2
+
3
+ The C3D-Parser is a Python desktop application for gait analysis.
4
+
5
+ Given a C3D motion capture session, the C3D-Parser generates a personalised OpenSim lower-limb
6
+ model using an articulated shape model. It then uses this model to run inverse kinematics,
7
+ inverse dynamics, and spatio-temporal analysis using the OpenSim API.
8
+
9
+ The entire process runs locally and offline.
10
+
11
+
12
+ ## Contents
13
+
14
+ - [Installation](#installation)
15
+ - [Usage](#usage)
16
+ - [Options](#options)
17
+ - [Custom Marker Sets](#custom-marker-sets)
18
+ - [Input Requirements](#input-requirements)
19
+ - [Feature Requests and Bug Reports](#feature-requests-and-bug-reports)
20
+
21
+
22
+ ## Installation
23
+
24
+ #### Installing the Windows executable (recommended):
25
+
26
+ The latest release of the C3D-Parser includes a Windows installer for setting up an executable
27
+ version of the application. Simply download and run _C3D-Parser-{release-version}.exe_ for any
28
+ release in the GitHub repository [_Releases_](https://github.com/tsalemink/C3D-parser/releases).
29
+
30
+ #### Installing the Python package:
31
+
32
+ It is recommended that you create a new virtual environment before installing this package, to
33
+ avoid any potential dependency conflicts with the packages already installed in your Python
34
+ environment.
35
+
36
+ If you intend to use this package directly from your Python environment you will also need to
37
+ install the OpenSim Python distribution yourself. This can be installed using Conda, or by building
38
+ the Python bindings from source. Development and testing have been done using Python 3.11 and
39
+ OpenSim 4.5, so we recommend installing those releases if possible. Though most recent Python and
40
+ OpenSim versions should work as well.
41
+
42
+ After activating your Python environment and installing OpenSim you can run
43
+ `pip install c3d-parser` to install the application. It can then be started by running the command
44
+ `c3d_parser`.
45
+
46
+
47
+ ## Usage
48
+
49
+ **Setup**
50
+ Before you can start processing a gait session, you need to define your lab's marker-set using the
51
+ "Lab" drop-down on the main-window. If this is your first time using the C3D-Parser please read
52
+ the section on [custom marker sets](#custom-marker-sets).
53
+
54
+
55
+ **1. Select Input Session**
56
+ Select your gait session using the "Input" line-edit or associated directory chooser. Each trial
57
+ in the session will be automatically classified as "Static" or "Dynamic", but you can override
58
+ these classifications by right-clicking on the item in question. You can exclude specific trials
59
+ from the analysis by using the check-boxes provided.
60
+
61
+ <p align="center">
62
+ <img src="res/images/Inputs.png" alt="Inputs Screenshot"/>
63
+ </p>
64
+
65
+ You can also specify an "Output" directory if you wish. By default, an output structure will be
66
+ created in your input directory.
67
+
68
+
69
+ **2. Confirm Anthropometric Data**
70
+ Next, check the subject's anthropometric measurements. This information should be automatically
71
+ filled using the metadata in your static C3D file. Confirm these values are accurate and fill in
72
+ any gaps.
73
+
74
+ <p align="center">
75
+ <img src="res/images/Anthropometrics.png" alt="Anthropometrics Screenshot"/>
76
+ </p>
77
+
78
+
79
+ **3. Processing**
80
+ Click "Process Data" to begin.
81
+
82
+ The application will create an OpenSim model using your input data and will run IK and ID. The
83
+ results from IK and ID will be displayed in the "Kinematic" and "Kinetic" tabs respectively.
84
+ The visualisation tab displays the generated model and the predicted landmark positions, comparing
85
+ these against the (skin-padding adjusted) experimental marker positions.
86
+
87
+ <p align="center">
88
+ <img src="res/images/Visualiser.png" alt="Visualiser Screenshot"/>
89
+ </p>
90
+
91
+
92
+ **4. Quality Control**
93
+
94
+ Check that the model looks sensible and that the differences in marker positions aren't too large.
95
+ Note that the width values provided here are between bone-surface landmarks, so should be slightly
96
+ smaller than your experimental measurements.
97
+
98
+ The last thing to do is to decide which gait cycles you wish to include in your final outputs.
99
+ By default, your results will include the data produced for every gait cycle in your session.
100
+ If it looks like there are cycles missing, please read the section on
101
+ [input requirements](#input-requirements).
102
+
103
+ To exclude a gait cycle from your results: click on the curve, right-click the plot area, and
104
+ select "Exclude Selected Cycles". Similarly, it is also possible to exclude/include entire
105
+ sections of data for specific trials by right-clicking on the trial name in the list of trials.
106
+
107
+ <p align="center">
108
+ <img src="res/images/Exclusion_01.png" alt="Exclusion 01"/>
109
+ <img src="res/images/Exclusion_02.png" alt="Exclusion 02"/>
110
+ </p>
111
+ <p align="center">
112
+ <img src="res/images/Exclusion_03.png" alt="Exclusion 03"/>
113
+ <img src="res/images/Exclusion_04.png" alt="Exclusion 04"/>
114
+ </p>
115
+
116
+ The "Spatio-temporal" tab supports exclusions in the same manner.
117
+
118
+ Click "Finalise Outputs" to produce the final results.
119
+
120
+
121
+ ## Options
122
+
123
+ User settings are available under _View_ -> _Options_.
124
+ All settings are retained after you close the application.
125
+
126
+ <p align="center">
127
+ <img src="res/images/Options.png" alt="Options Screenshot"/>
128
+ </p>
129
+
130
+ **File**
131
+ _Input Data Directory_ and _Output Data Directory_ define the default starting directories for the
132
+ _Input_ and _Output_ directory choosers on the main window.
133
+
134
+ **Plots**
135
+ _Line Width_ refers to the width of the lines displayed on the graphs in the visualisation tabs.
136
+
137
+ Plot colours can be adjusted using colour hex codes. Please ensure the selection colour is
138
+ distinct from the left and right side colours.
139
+
140
+ **OpenSim Model**
141
+ After creating the initial OpenSim model, an optional knee axis optimisation can be run to refine
142
+ the model prior to analysis. This process is time-consuming and can be disabled for testing
143
+ purposes.
144
+
145
+ **Filtering**
146
+ If the filtering check boxes are selected, the C3D-Parser will filter (8Hz Butterworth low-pass)
147
+ the TRC and GRF inputs before running the rest of the workflow. If your inputs are pre-filtered,
148
+ please deselect these options.
149
+
150
+ **Inverse Kinematics**
151
+ If you wish to define custom marker weights, you may do so by providing your own IK task set file.
152
+ Please follow the format used in the C3D-Parser
153
+ [default IK task set](src/c3d_parser/core/osim_resources/ik_task_set.xml).
154
+
155
+
156
+ ## Custom Marker Sets
157
+
158
+ The application pre-defines a number of lab-specific marker sets. If the marker sets we provide do
159
+ not fit your needs you can adjust one of the existing marker sets or create a new one from scratch
160
+ using the custom marker set dialog under "Marker" -> "Custom Marker Set".
161
+
162
+ <p align="center">
163
+ <img src="res/images/Custom_Marker_Set.png" alt="Custom Marker Set Screenshot"/>
164
+ </p>
165
+
166
+ You can import an initial mapping from one of the existing marker sets using the "Import" button.
167
+
168
+ We recommend that you specify your input session directory (using the "Input" line-edit in the main
169
+ window) before opening the custom marker set dialog, this way the drop-down menu associated with
170
+ each required marker will be populated with the list of markers defined in your static trial.
171
+ Otherwise, you will have to type in the marker names manually, which is time-consuming and prone
172
+ to errors. The dialog will also attempt to match any commonly named markers that it identifies in
173
+ your static trial.
174
+
175
+ Your custom marker set must define: "ASI", "KNE", "ANK", "MED", "HEE", either "PSI" or "SACR",
176
+ either "KNEM" or "KAX".
177
+
178
+
179
+ ## Input Requirements
180
+
181
+ To be able to create an OpenSim model from your static C3D file, it must contain either: medial
182
+ knee markers; or KAD markers as well as knee-width values in the C3D metadata PROCESSING section
183
+ (so that we can calculate virtual positions for the medial markers based on the lateral knee marker
184
+ positions).
185
+
186
+ It is recommended that your static C3D file defines the subject's height and weight in the metadata
187
+ PROCESSING section, otherwise you will be prompted for this information.
188
+
189
+ Additionally, to be able to cover a wide range of inputs whilst keep the UI as minimal as possible,
190
+ we have had to adopt a fairly strict policy on what is considered a 'valid' gait event. If a foot
191
+ strike occurs over multiple force plates, we will be unable to use the GRF data associated with
192
+ that stance phase. This will also affect which gait cycles are considered valid when normalising
193
+ the results from ID.
194
+
195
+
196
+ ## Feature Requests and Bug Reports
197
+
198
+ If you would like to suggest a new feature for this application or report a bug you have discovered, please create a
199
+ "New Issue" using the appropriate template found in this repository's
200
+ [_Issues_](https://github.com/tsalemink/C3D-parser/issues) page. Please check that your request does not match any
201
+ existing issues.
202
+
203
+ Ongoing development of features and bug fixes can be tracked using the development
204
+ [_Project_](https://github.com/users/tsalemink/projects/3) for this repository.
@@ -28,5 +28,5 @@ dependencies = {file = ["requirements.txt"]}
28
28
  [project.urls]
29
29
  Repository = "https://github.com/tsalemink/C3D-parser"
30
30
 
31
- [project.scripts]
31
+ [project.gui-scripts]
32
32
  c3d_parser = "c3d_parser.application:main"
@@ -0,0 +1,13 @@
1
+ scipy
2
+ numpy==1.26.4
3
+ pandas
4
+ c3d==0.5.2
5
+ trc-data-reader
6
+ # TODO: This should really be `==` since we are changing function signature between versions.
7
+ # If someone tries to install the latest PyPI release it will use an incompatible version of OMC.
8
+ opensim-model-creator>=0.5.0
9
+ PySide6
10
+ matplotlib
11
+ mplcursors
12
+ pyvistaqt
13
+ ll-visualiser>=0.3.0
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = "1.0.2"