autogaita 0.4.0__tar.gz → 0.4.1__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 (40) hide show
  1. {autogaita-0.4.0 → autogaita-0.4.1}/PKG-INFO +1 -1
  2. {autogaita-0.4.0 → autogaita-0.4.1}/README.md +14 -9
  3. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_dlc.py +23 -18
  4. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_group_gui.py +4 -4
  5. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_simi_gui.py +1 -0
  6. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_dlc_singlerun.py +1 -1
  7. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/dlc_gui_config.json +25 -24
  8. autogaita-0.4.1/autogaita/group_gui_config.json +69 -0
  9. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/simi_gui_config.json +18 -10
  10. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita.egg-info/PKG-INFO +1 -1
  11. {autogaita-0.4.0 → autogaita-0.4.1}/setup.py +1 -1
  12. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_dlc_unit3_main_analysis.py +3 -2
  13. autogaita-0.4.0/autogaita/group_gui_config.json +0 -37
  14. {autogaita-0.4.0 → autogaita-0.4.1}/LICENSE +0 -0
  15. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/__init__.py +0 -0
  16. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/__main__.py +0 -0
  17. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita.py +0 -0
  18. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_dlc_gui.py +0 -0
  19. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_group.py +0 -0
  20. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_icon.icns +0 -0
  21. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_icon.ico +0 -0
  22. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_logo.png +0 -0
  23. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_simi.py +0 -0
  24. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/autogaita_utils.py +0 -0
  25. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/__init__.py +0 -0
  26. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_dlc_multirun.py +0 -0
  27. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_group_dlcrun.py +0 -0
  28. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_group_simirun.py +0 -0
  29. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_simi_multirun.py +0 -0
  30. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita/batchrun_scripts/autogaita_simi_singlerun.py +0 -0
  31. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita.egg-info/SOURCES.txt +0 -0
  32. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita.egg-info/dependency_links.txt +0 -0
  33. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita.egg-info/requires.txt +0 -0
  34. {autogaita-0.4.0 → autogaita-0.4.1}/autogaita.egg-info/top_level.txt +0 -0
  35. {autogaita-0.4.0 → autogaita-0.4.1}/setup.cfg +0 -0
  36. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_dlc_approval.py +0 -0
  37. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_dlc_unit1_preparation.py +0 -0
  38. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_dlc_unit2_sc_extraction.py +0 -0
  39. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_group_approval.py +0 -0
  40. {autogaita-0.4.0 → autogaita-0.4.1}/tests/test_simi_approval.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogaita
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: Automatic Gait Analysis in Python. A toolbox to streamline and standardise the analysis of kinematics across species after ML-based body posture tracking. Despite being optimised for gait analyses, AutoGaitA has the potential to be used for any kind of kinematic analysis.
5
5
  Home-page: https://github.com/mahan-hosseini/AutoGaitA/
6
6
  Author: Mahan Hosseini
@@ -20,7 +20,7 @@
20
20
 
21
21
  It is strongly recommended that a separate virtual environment for AutoGaitA is created (note that the approach below creates the virtual environment to your current directory):
22
22
 
23
- - Create the virtual environment
23
+ - Create the virtual environment:
24
24
  - `python -m venv env_gaita`
25
25
 
26
26
  - After creation, activate the virtual environment via:
@@ -29,17 +29,22 @@ It is strongly recommended that a separate virtual environment for AutoGaitA is
29
29
 
30
30
  - Once activated, install AutoGaitA in the virtual environment via pip: `pip install autogaita`.
31
31
 
32
- - Access the main user interface via `python -m autogaita`.
32
+ - Access the main user interface via: `python -m autogaita`.
33
33
 
34
34
  - To update to the latest release (see the *Releases* panel on the right for the latest release) activate the virtual environment and: `pip install autogaita -U`.
35
35
 
36
- ## Tutorials and Examples
36
+ ## Demo Video
37
+ *Check out the video below for a demonstration of AutoGaitA's main workflow!*
38
+ <p><a href="https://youtu.be/_HIZVuUzpzk?feature=shared">
39
+ <img src="https://github.com/mahan-hosseini/AutoGaitA/blob/main/res/pic_to_demo_for_repo.png" width="550">
37
40
 
38
- ### Video Walkthrough Tutorials
41
+ ## Tutorials & Examples
39
42
 
40
- **[The AutoGaitA YouTube Channel](https://youtube.com/playlist?list=PLCn5T7K_H8K56NIcEsfDK664OP7cN_Bad&si=mV5p2--nYvbofkPh) provides tutorials for file preparation and instructions on how to use AutoGaitA**
43
+ ### Walkthrough Tutorial Videos
41
44
 
42
- *Please note that tutorial videos might not always reflect the most up-to-date version of our toolbox, especially in the beginning when things are regularly changing. We will make sure to record new videos whenever there are major changes, though.*
45
+ **[The AutoGaitA YouTube Channel](https://youtube.com/playlist?list=PLCn5T7K_H8K56NIcEsfDK664OP7cN_Bad&si=mV5p2--nYvbofkPh) provides tutorials for file preparation and instructions on how to use AutoGaitA. This includes in-depth explanations of all details, (main & advanced) configurations, possibilities, and outputs.**
46
+
47
+ *Please note that tutorial videos might not always reflect the most up-to-date version of our toolbox, especially in the beginning when things are regularly changing. We will make sure to record new videos whenever there are major changes though. Last tutorial-update was with v0.4.0. (August 2024).*
43
48
 
44
49
  ### Example Data
45
50
  We provide an example dataset in the **example data** folder of this repository, with a set of mice walking over differently wide beams and both the beam as well as body coordinates being tracked with DLC. Note that this dataset was used in our tutorial videos introducing *AutoGaitA_DLC*, *AutoGaitA_Group* and in our video explaining file preparation for *AutoGaitA_DLC*. We further provide a **group** folder there that can be used alongside the *AutoGaitA_Group* tutorial to confirm that users generate the same set of results following our instructions.
@@ -47,7 +52,7 @@ We provide an example dataset in the **example data** folder of this repository,
47
52
  ### Annotation Table Examples and Templates
48
53
  Annotation Table example and template files for *AutoGaitA_DLC* and *AutoGaitA_Simi* can be found in the [**annotation tables**](https://github.com/mahan-hosseini/AutoGaitA/tree/main/annotation%20tables) folder of this repository.
49
54
 
50
- Users are advised to read the ***important note*** of that folder, use the template to enter their data's timestamp information and to then compare the resulting table with our example to check formatting. Users working with ImageJ/FIJI are encouraged to check out the [AnnotationTable-Plugin](https://github.com/luca-flemming/AnnotationTable-Plugin) developed by our contributor Luca Flemming.
55
+ Users are advised to read the **General Recommendations** section of that folder, use the template to enter their data's timestamp information and to then compare the resulting table with our example to check formatting. Users working with ImageJ/FIJI are encouraged to check out the [AnnotationTable-Plugin](https://github.com/luca-flemming/AnnotationTable-Plugin) developed by our contributor Luca Flemming.
51
56
 
52
57
  ## Documentation
53
58
 
@@ -59,8 +64,8 @@ Users are advised to read the ***important note*** of that folder, use the templ
59
64
  By default, *AutoGaitA DLC* and *AutoGaitA Simi* implement standard values for mouse and human locomotion, respectively. If your analysis deviates from these standards (e.g. by focussing on another limb or a different species) **you must change these values!** You can find the window in the *advanced configuration* sections and once values are customised they remain for subsequent executions of AutoGaitA (i.e., until the program is closed).
60
65
 
61
66
  **Find out more about *AutoGaitA's custom joints and angles:***
62
- - [YouTube - AutoGaitA DLC Advanced Configuration](https://youtu.be/YABoQMOqChk?feature=shared)
63
- - [YouTube - AutoGaitA Simi](https://youtu.be/fJhnjrJbA5c?feature=shared)
67
+ - [YouTube - AutoGaitA DLC Advanced Configuration](https://youtu.be/MP9g9kXRE_Q?feature=shared)
68
+ - [YouTube - AutoGaitA Simi](https://youtu.be/rTG-Fc9XI9g?feature=shared)
64
69
  - [Documentation - AutoGaitA DLC](https://docs.google.com/document/d/1Y4wrrsjs0ybLDKPzE2LAatqPDq9jtwjIuk4M0jRZ3wE/edit#heading=h.20bg7b7ymt0b)
65
70
  - [Documentation - AutoGaitA Simi](https://docs.google.com/document/d/1Y4wrrsjs0ybLDKPzE2LAatqPDq9jtwjIuk4M0jRZ3wE/edit#heading=h.uz61bpmua7qz)
66
71
 
@@ -1286,10 +1286,13 @@ def standardise_x_y_and_add_features_to_one_step(step, cfg):
1286
1286
  else:
1287
1287
  this_y_min = step_copy[y_cols].min().min()
1288
1288
  step_copy[y_cols] -= this_y_min
1289
- # add angles and velocities
1290
- step_copy = add_features(step_copy, cfg)
1291
- # standardise x (horizontal dimension) at step-cycle level too
1292
- if cfg["standardise_x_coordinates"] is True:
1289
+ # if no x-standardisation, just add features & return non-(x-)normalised step
1290
+ if cfg["standardise_x_coordinates"] is False:
1291
+ non_norm_step = add_features(step_copy, cfg)
1292
+ return non_norm_step
1293
+ # else standardise x (horizontal dimension) at step-cycle level too
1294
+ else:
1295
+ non_norm_step = add_features(step_copy, cfg)
1293
1296
  x_norm_step = step_copy.copy()
1294
1297
  x_cols = [col for col in x_norm_step.columns if col.endswith("x")]
1295
1298
  # note the [0] here is important because it's still a list of len=1!!
@@ -1298,9 +1301,7 @@ def standardise_x_y_and_add_features_to_one_step(step, cfg):
1298
1301
  ].min()
1299
1302
  x_norm_step[x_cols] -= min_x_standardisation_joint
1300
1303
  x_norm_step = add_features(x_norm_step, cfg)
1301
- return step_copy, x_norm_step
1302
- else:
1303
- return step_copy
1304
+ return non_norm_step, x_norm_step
1304
1305
 
1305
1306
 
1306
1307
  def add_features(step, cfg):
@@ -1308,10 +1309,11 @@ def add_features(step, cfg):
1308
1309
  # unpack
1309
1310
  hind_joints = cfg["hind_joints"]
1310
1311
  angles = cfg["angles"]
1312
+ if hind_joints:
1313
+ step = add_x_velocities(step, cfg)
1311
1314
  if angles["name"]: # if there is at least 1 string in the list
1312
1315
  step = add_angles(step, cfg)
1313
- if hind_joints:
1314
- step = add_velocities(step, cfg)
1316
+ step = add_angular_velocities(step, cfg)
1315
1317
  return step
1316
1318
 
1317
1319
 
@@ -1356,28 +1358,31 @@ def compute_angle(joint_angle, joint2, joint3):
1356
1358
  return math.degrees(angle)
1357
1359
 
1358
1360
 
1359
- def add_velocities(step, cfg):
1360
- """Feature #2: Joint x and Angular Velocities"""
1361
+ def add_x_velocities(step, cfg):
1362
+ """Feature #2: Joint x Velocities & Accelerations"""
1361
1363
  # unpack
1362
1364
  hind_joints = cfg["hind_joints"]
1363
1365
  x_acceleration = cfg["x_acceleration"]
1364
- angular_acceleration = cfg["angular_acceleration"]
1365
- # compute velocities (& acceleration if wanted) for hind joints first
1366
+
1366
1367
  for joint in hind_joints:
1367
1368
  step[joint + "Velocity"] = 0.0
1368
1369
  if x_acceleration:
1369
1370
  step[joint + "Acceleration"] = 0.0
1370
- # step[joint + "Accel. Gradient"] = 0.0
1371
1371
  for joint in hind_joints:
1372
1372
  step.loc[:, joint + "Velocity"] = np.gradient(step.loc[:, joint + "x"])
1373
1373
  if x_acceleration:
1374
1374
  step.loc[:, joint + "Acceleration"] = np.gradient(
1375
1375
  step.loc[:, joint + "Velocity"]
1376
1376
  )
1377
- # step.loc[:, joint + "Accel. Gradient"]= np.gradient(
1378
- # step.loc[:, joint + "Acceleration"])
1379
- # compute velocities (& acceleration) for the angles too
1380
- angle_cols = [c for c in step.columns if "Angle" in c]
1377
+ return step
1378
+
1379
+
1380
+ def add_angular_velocities(step, cfg):
1381
+ """Feature #3: Angular Velocities & Accelerations"""
1382
+ # unpack
1383
+ angular_acceleration = cfg["angular_acceleration"]
1384
+
1385
+ angle_cols = [c for c in step.columns if c.endswith("Angle")]
1381
1386
  for angle in angle_cols:
1382
1387
  step[angle + " Velocity"] = 0.0 # space is correct here
1383
1388
  if angular_acceleration:
@@ -82,7 +82,7 @@ COLOR_PALETTES_LIST = [
82
82
  "cividis_r", # uniform palettes in reversed order
83
83
  ]
84
84
  EXCLUDED_VARS_FROM_CFG_FILE = ["last_runs_stats_variables", "last_runs_PCA_variables"]
85
- AV_SHEET_NAME = "Average Stepcycle"
85
+ NORM_SHEET_NAME = "Normalised Stepcycle"
86
86
  WINDOWS_TASKBAR_MAXHEIGHT = 72
87
87
 
88
88
  # To get the path of the autogaita folder I use __file__
@@ -134,7 +134,7 @@ def group_gui():
134
134
  root_dimensions = (root_w, root_h, root_x, root_y)
135
135
  # set the dimensions of the screen and where it is placed
136
136
  root.geometry("%dx%d+%d+%d" % root_dimensions)
137
- root.title("AutoGaitA Group")
137
+ root.title("Group GaitA")
138
138
 
139
139
  # nested function: main window
140
140
  def mainwindow(root, group_number, root_dimensions):
@@ -230,7 +230,7 @@ def build_mainwindow(root, group_number, root_dimensions):
230
230
  # ........................ geometry & intro section ..........................
231
231
  # geometry
232
232
  mainwindow = ctk.CTkToplevel(root)
233
- mainwindow.title("AutoGaitA Group")
233
+ mainwindow.title("Group GaitA")
234
234
  # set the dimensions of the screen and where it is placed
235
235
  # => have it half-wide starting at 1/4 of screen's width (dont change w & x!)
236
236
  mainwindow.geometry(
@@ -668,7 +668,7 @@ def definefeatures_window(
668
668
  # next operator means we loop lazy - stop once we find it & return None if av
669
669
  # sheet not in dir
670
670
  av_sheet_path = next(
671
- (file for file in IDs_files if AV_SHEET_NAME in file), None
671
+ (file for file in IDs_files if NORM_SHEET_NAME in file), None
672
672
  )
673
673
  if av_sheet_path: # won't be true if no AVXLS found
674
674
  full_path = os.path.join(some_IDs_dir, av_sheet_path)
@@ -378,6 +378,7 @@ def build_cfg_window(root, cfg, root_dimensions):
378
378
  screen_height = root.winfo_screenheight() # height of the screen
379
379
  # build window
380
380
  cfg_window = ctk.CTkToplevel(root)
381
+ cfg_window.title("Advanced Configuration")
381
382
  cfg_window.geometry(
382
383
  f"{int(screen_width/2)}x{screen_height}+{int(screen_width/4)}+0"
383
384
  )
@@ -33,7 +33,7 @@ def dlc_singlerun():
33
33
  cfg["save_to_xls"] = True
34
34
  cfg["bin_num"] = 25
35
35
  cfg["plot_SE"] = True
36
- cfg["standardise_y_at_SC_level"] = True
36
+ cfg["standardise_y_at_SC_level"] = False
37
37
  cfg["standardise_y_to_a_joint"] = True
38
38
  cfg["y_standardisation_joint"] = ["Hind paw tao"]
39
39
  cfg["plot_joint_number"] = 3
@@ -1,22 +1,22 @@
1
1
  [
2
2
  {
3
- "mouse_num": "",
4
- "run_num": "",
5
- "root_dir": "",
6
- "sctable_filename": "",
7
- "data_string": "",
8
- "beam_string": "",
9
- "premouse_string": "",
10
- "postmouse_string": "",
11
- "prerun_string": "",
12
- "postrun_string": ""
3
+ "mouse_num": "14",
4
+ "run_num": "1",
5
+ "root_dir": "/Users/mahan/sciebo/Research/AutoGaitA/CRC Demo Files/CRC_Demo_Mice/",
6
+ "sctable_filename": "25mm",
7
+ "data_string": "SIMINewOct",
8
+ "beam_string": "BeamTrain",
9
+ "premouse_string": "Mouse",
10
+ "postmouse_string": "25mm",
11
+ "prerun_string": "run",
12
+ "postrun_string": "-6DLC"
13
13
  },
14
14
  {
15
- "sampling_rate": "",
16
- "subtract_beam": false,
15
+ "sampling_rate": "100",
16
+ "subtract_beam": true,
17
17
  "dont_show_plots": false,
18
- "convert_to_mm": false,
19
- "pixel_to_mm_ratio": "",
18
+ "convert_to_mm": true,
19
+ "pixel_to_mm_ratio": "3.76",
20
20
  "x_sc_broken_threshold": "200",
21
21
  "y_sc_broken_threshold": "50",
22
22
  "x_acceleration": true,
@@ -24,8 +24,8 @@
24
24
  "save_to_xls": true,
25
25
  "bin_num": "25",
26
26
  "plot_joint_number": "3",
27
- "plot_SE": false,
28
- "standardise_y_at_SC_level": false,
27
+ "plot_SE": true,
28
+ "standardise_y_at_SC_level": true,
29
29
  "standardise_y_to_a_joint": true,
30
30
  "y_standardisation_joint": [
31
31
  "Hind paw tao"
@@ -41,11 +41,9 @@
41
41
  "legend_outside": true,
42
42
  "results_dir": "",
43
43
  "hind_joints": [
44
- "Hind paw tao ",
45
- "Ankle ",
46
- "Knee ",
47
- "Hip ",
48
- "Iliac Crest "
44
+ "Foot",
45
+ "Shoulder",
46
+ "Knee "
49
47
  ],
50
48
  "fore_joints": [
51
49
  "Front paw tao ",
@@ -73,17 +71,20 @@
73
71
  "name": [
74
72
  "Ankle",
75
73
  "Knee",
76
- "Hip"
74
+ "Hip",
75
+ "Elbow"
77
76
  ],
78
77
  "lower_joint": [
79
78
  "Hind paw tao",
80
79
  "Ankle",
81
- "Knee"
80
+ "Knee",
81
+ "Wrist"
82
82
  ],
83
83
  "upper_joint": [
84
84
  "Knee",
85
85
  "Hip",
86
- "Iliac Crest"
86
+ "Iliac Crest",
87
+ "Shoulder"
87
88
  ]
88
89
  }
89
90
  }
@@ -0,0 +1,69 @@
1
+ [
2
+ {
3
+ "group_names": [
4
+ "5 mm",
5
+ "12 mm",
6
+ "25 mm ",
7
+ "",
8
+ "",
9
+ ""
10
+ ],
11
+ "group_dirs": [
12
+ "/Users/mahan/sciebo/PythonCode/autogaita_repository/example data/5mm/Results",
13
+ "/Users/mahan/sciebo/PythonCode/autogaita_repository/example data/12mm/Results",
14
+ "/Users/mahan/sciebo/PythonCode/autogaita_repository/example data/25mm/Results",
15
+ "",
16
+ "",
17
+ ""
18
+ ],
19
+ "results_dir": "/Users/mahan/Desktop/GroupResults/"
20
+ },
21
+ {
22
+ "do_permtest": false,
23
+ "do_anova": true,
24
+ "anova_design": "RM ANOVA",
25
+ "permutation_number": 10000,
26
+ "stats_threshold": "0.05",
27
+ "which_leg": "right",
28
+ "number_of_PCs": 3,
29
+ "save_3D_PCA_video": false,
30
+ "plot_SE": false,
31
+ "color_palette": "viridis",
32
+ "dont_show_plots": false,
33
+ "legend_outside": true,
34
+ "stats_variables": [
35
+ "Ankle y"
36
+ ],
37
+ "PCA_variables": [
38
+ "Wrist y",
39
+ "Elbow x",
40
+ "Elbow y",
41
+ "Lower Shoulder x",
42
+ "Lower Shoulder y",
43
+ "Upper Shoulder x",
44
+ "Upper Shoulder y",
45
+ "Iliac Crest x",
46
+ "Iliac Crest y",
47
+ "Hip x",
48
+ "Hip y",
49
+ "Knee x",
50
+ "Knee y",
51
+ "Ankle x",
52
+ "Ankle y",
53
+ "Hind paw tao x",
54
+ "Hind paw tao y",
55
+ "Tail base x",
56
+ "Tail base y",
57
+ "Tail center x",
58
+ "Tail center y",
59
+ "Tail tip x",
60
+ "Tail tip y",
61
+ "Ankle Angle",
62
+ "Knee Angle",
63
+ "Hip Angle",
64
+ "Hind paw tao Velocity",
65
+ "Hind paw tao Acceleration",
66
+ "Ankle Velocity"
67
+ ]
68
+ }
69
+ ]
@@ -1,14 +1,14 @@
1
1
  [
2
2
  {
3
- "name": "",
4
- "root_dir": "",
5
- "sctable_filename": "",
3
+ "name": "Control_1",
4
+ "root_dir": "/Users/mahan/sciebo/Research/AutoGaitA/Human/Testing2",
5
+ "sctable_filename": "SC Latency Table",
6
6
  "postname_flag": false,
7
7
  "postname_string": ""
8
8
  },
9
9
  {
10
10
  "analyse_singlerun": false,
11
- "sampling_rate": "",
11
+ "sampling_rate": "100",
12
12
  "dont_show_plots": false,
13
13
  "y_acceleration": true,
14
14
  "angular_acceleration": true,
@@ -16,8 +16,8 @@
16
16
  "plot_joint_number": "3",
17
17
  "plot_SE": false,
18
18
  "normalise_height_at_SC_level": true,
19
- "analyse_average_y": false,
20
- "color_palette": "viridis",
19
+ "analyse_average_y": true,
20
+ "color_palette": "Set2",
21
21
  "legend_outside": true,
22
22
  "results_dir": "",
23
23
  "joints": [
@@ -25,23 +25,31 @@
25
25
  "Ankle ",
26
26
  "Knee ",
27
27
  "Hip ",
28
- "Pelvis "
28
+ "Pelvis ",
29
+ "",
30
+ ""
29
31
  ],
30
32
  "angles": {
31
33
  "name": [
32
34
  "Ankle",
33
35
  "Knee",
34
- "Hip"
36
+ "Hip",
37
+ "",
38
+ ""
35
39
  ],
36
40
  "lower_joint": [
37
41
  "Midfoot",
38
42
  "Ankle",
39
- "Knee"
43
+ "Knee",
44
+ "",
45
+ ""
40
46
  ],
41
47
  "upper_joint": [
42
48
  "Knee",
43
49
  "Hip",
44
- "Pelvis"
50
+ "Pelvis",
51
+ "",
52
+ ""
45
53
  ]
46
54
  }
47
55
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogaita
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: Automatic Gait Analysis in Python. A toolbox to streamline and standardise the analysis of kinematics across species after ML-based body posture tracking. Despite being optimised for gait analyses, AutoGaitA has the potential to be used for any kind of kinematic analysis.
5
5
  Home-page: https://github.com/mahan-hosseini/AutoGaitA/
6
6
  Author: Mahan Hosseini
@@ -25,7 +25,7 @@ if platform.system() == "Darwin":
25
25
  setup(
26
26
  name="autogaita",
27
27
  python_requires=">=3.10",
28
- version="0.4.0", # rc == release candidate (before release is finished)
28
+ version="0.4.1", # rc == release candidate (before release is finished)
29
29
  author="Mahan Hosseini",
30
30
  description="Automatic Gait Analysis in Python. A toolbox to streamline and standardise the analysis of kinematics across species after ML-based body posture tracking. Despite being optimised for gait analyses, AutoGaitA has the potential to be used for any kind of kinematic analysis.",
31
31
  packages=["autogaita", "autogaita.batchrun_scripts"],
@@ -3,7 +3,7 @@ from autogaita.autogaita_dlc import (
3
3
  extract_stepcycles,
4
4
  analyse_and_export_stepcycles,
5
5
  )
6
- from autogaita.autogaita_dlc import add_angles, add_velocities
6
+ from autogaita.autogaita_dlc import add_angles, add_x_velocities, add_angular_velocities
7
7
  from autogaita.autogaita_dlc import standardise_x_y_and_add_features_to_one_step
8
8
  from hypothesis import given
9
9
  import hypothesis.strategies as st
@@ -217,7 +217,8 @@ def test_velocities():
217
217
  "x_acceleration": True,
218
218
  "angular_acceleration": True,
219
219
  }
220
- step = add_velocities(step, cfg)
220
+ step = add_x_velocities(step, cfg)
221
+ step = add_angular_velocities(step, cfg)
221
222
  # expected values were obtained by calling np.gradient on arrays above
222
223
  expected_values = {
223
224
  "Sample Velocity": [2.0, 2.0, 3.0, 2.0, -2.0, -3.0, -2.0, -2.0, -5.0, -8.0],
@@ -1,37 +0,0 @@
1
- [
2
- {
3
- "group_names": [
4
- "",
5
- "",
6
- "",
7
- "",
8
- "",
9
- ""
10
- ],
11
- "group_dirs": [
12
- "",
13
- "",
14
- "",
15
- "",
16
- "",
17
- ""
18
- ],
19
- "results_dir": ""
20
- },
21
- {
22
- "do_permtest": true,
23
- "do_anova": false,
24
- "anova_design": "",
25
- "permutation_number": "10000",
26
- "stats_threshold": "0.05",
27
- "which_leg": "right",
28
- "number_of_PCs": 3,
29
- "save_3D_PCA_video": false,
30
- "plot_SE": false,
31
- "color_palette": "viridis",
32
- "dont_show_plots": false,
33
- "legend_outside": true,
34
- "stats_variables": [],
35
- "PCA_variables": []
36
- }
37
- ]
File without changes
File without changes