autogaita 0.3.0__tar.gz → 0.3.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.
- autogaita-0.3.1/PKG-INFO +10 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/README.md +1 -1
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_dlc.py +13 -2
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_group.py +12 -13
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_simi.py +25 -8
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_dlc_multirun.py +29 -6
- autogaita-0.3.1/autogaita.egg-info/PKG-INFO +10 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/setup.py +1 -1
- autogaita-0.3.0/PKG-INFO +0 -24
- autogaita-0.3.0/autogaita.egg-info/PKG-INFO +0 -24
- {autogaita-0.3.0 → autogaita-0.3.1}/LICENSE +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/__init__.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/__main__.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_dlc_gui.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_group_gui.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_icon.icns +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_icon.ico +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_logo.png +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_simi_gui.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/autogaita_utils.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/__init__.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_dlc_singlerun.py +1 -1
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_group_dlcrun.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_group_simirun.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_simi_multirun.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/batchrun_scripts/autogaita_simi_singlerun.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/dlc_gui_config.json +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/group_gui_config.json +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita/simi_gui_config.json +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita.egg-info/SOURCES.txt +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita.egg-info/dependency_links.txt +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita.egg-info/requires.txt +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/autogaita.egg-info/top_level.txt +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/setup.cfg +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_dlc_approval.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_dlc_unit1_preparation.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_dlc_unit2_sc_extraction.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_dlc_unit3_main_analysis.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_group_approval.py +0 -0
- {autogaita-0.3.0 → autogaita-0.3.1}/tests/test_simi_approval.py +0 -0
autogaita-0.3.1/PKG-INFO
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: autogaita
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Automatic Gait Analysis in Python
|
|
5
|
+
Home-page: https://github.com/mahan-hosseini/AutoGaitA/
|
|
6
|
+
Author: Mahan Hosseini
|
|
7
|
+
License: GPLv3
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Provides-Extra: dev
|
|
10
|
+
License-File: LICENSE
|
|
@@ -31,7 +31,7 @@ It is strongly recommended that a separate virtual environment for AutoGaitA is
|
|
|
31
31
|
|
|
32
32
|
- Access the main user interface via `python -m autogaita`.
|
|
33
33
|
|
|
34
|
-
- To update to the latest release (see the *Releases* panel on the right for the
|
|
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
36
|
## Tutorials and Examples
|
|
37
37
|
|
|
@@ -84,6 +84,8 @@ def dlc(info, folderinfo, cfg):
|
|
|
84
84
|
all_cycles = extract_stepcycles(data, info, folderinfo, cfg)
|
|
85
85
|
if not all_cycles:
|
|
86
86
|
handle_issues("scs_invalid", info)
|
|
87
|
+
if cfg["dont_show_plots"] is False: # otherwise stuck at loading
|
|
88
|
+
plot_panel_instance.destroy_plot_panel()
|
|
87
89
|
return
|
|
88
90
|
|
|
89
91
|
# ......... main analysis: sc-lvl y-norm, features, df-creation & export ..........
|
|
@@ -1443,6 +1445,9 @@ def plot_results(info, results, folderinfo, cfg, plot_panel_instance):
|
|
|
1443
1445
|
# ...............................3 - angles by time.................................
|
|
1444
1446
|
if angles["name"]:
|
|
1445
1447
|
plot_angles_by_time(all_steps_data, sc_idxs, info, cfg, plot_panel_instance)
|
|
1448
|
+
# regularly closing figures to save memory
|
|
1449
|
+
# => no problem to do this since we pass figure-vars to save-functions and PlotPanel
|
|
1450
|
+
plt.close("all")
|
|
1446
1451
|
|
|
1447
1452
|
# ..........................4 - hindlimb stick diagram..............................
|
|
1448
1453
|
plot_hindlimb_stickdiagram(all_steps_data, sc_idxs, info, cfg, plot_panel_instance)
|
|
@@ -1461,6 +1466,7 @@ def plot_results(info, results, folderinfo, cfg, plot_panel_instance):
|
|
|
1461
1466
|
plot_joint_x_by_average_SC(
|
|
1462
1467
|
average_data, std_data, info, cfg, plot_panel_instance
|
|
1463
1468
|
)
|
|
1469
|
+
plt.close("all")
|
|
1464
1470
|
|
|
1465
1471
|
# ........................8 - average angles over SC percentage.....................
|
|
1466
1472
|
if angles["name"]:
|
|
@@ -1491,11 +1497,12 @@ def plot_results(info, results, folderinfo, cfg, plot_panel_instance):
|
|
|
1491
1497
|
plot_angular_acceleration_by_average_SC(
|
|
1492
1498
|
average_data, std_data, info, cfg, plot_panel_instance
|
|
1493
1499
|
)
|
|
1500
|
+
plt.close("all")
|
|
1494
1501
|
|
|
1495
1502
|
# ........................optional - 13 - build plot panel..........................
|
|
1496
|
-
if
|
|
1503
|
+
if dont_show_plots is True:
|
|
1497
1504
|
pass # going on without building the plot window
|
|
1498
|
-
elif
|
|
1505
|
+
elif dont_show_plots is False: # -> show plot panel
|
|
1499
1506
|
# Destroy loading screen and build plot panel with all figures
|
|
1500
1507
|
plot_panel_instance.destroy_plot_panel_loading_screen()
|
|
1501
1508
|
plot_panel_instance.build_plot_panel()
|
|
@@ -2427,6 +2434,10 @@ class PlotPanel:
|
|
|
2427
2434
|
f"AutoGaitA Plot Panel {self.current_fig_index+1}/{len(self.figures)}"
|
|
2428
2435
|
)
|
|
2429
2436
|
|
|
2437
|
+
def destroy_plot_panel(self):
|
|
2438
|
+
# Needed if no SCs after checks
|
|
2439
|
+
self.loading_screen.destroy()
|
|
2440
|
+
|
|
2430
2441
|
|
|
2431
2442
|
# %% local functions 5 - print finish
|
|
2432
2443
|
|
|
@@ -135,6 +135,7 @@ def group(folderinfo, cfg):
|
|
|
135
135
|
# ................................... PCA ........................................
|
|
136
136
|
if cfg["PCA_variables"]: # empty lists are falsey!
|
|
137
137
|
PCA_on_a_limb(avg_dfs, folderinfo, cfg, plot_panel_instance)
|
|
138
|
+
plt.close("all") # OK since all figures passed to save-funcs & PlotPanel
|
|
138
139
|
|
|
139
140
|
# .............................. prepare statistics ..............................
|
|
140
141
|
stats_df = create_stats_df(avg_dfs, folderinfo, cfg)
|
|
@@ -152,6 +153,7 @@ def group(folderinfo, cfg):
|
|
|
152
153
|
cfg,
|
|
153
154
|
plot_panel_instance,
|
|
154
155
|
)
|
|
156
|
+
plt.close("all")
|
|
155
157
|
|
|
156
158
|
# .................................. ANOVA ...................................
|
|
157
159
|
if cfg["do_anova"]: # indentation since we check for stats-vars here too!
|
|
@@ -165,6 +167,7 @@ def group(folderinfo, cfg):
|
|
|
165
167
|
cfg,
|
|
166
168
|
plot_panel_instance,
|
|
167
169
|
)
|
|
170
|
+
plt.close("all")
|
|
168
171
|
|
|
169
172
|
# .................................. plots .......................................
|
|
170
173
|
plot_results(g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance)
|
|
@@ -606,6 +609,10 @@ def import_and_combine_dfs(
|
|
|
606
609
|
group_df = df_copy.iloc[sc_idxs[sc]]
|
|
607
610
|
else:
|
|
608
611
|
nanvector = df_copy.loc[[1]]
|
|
612
|
+
# new for pandas 2.2.2 - change all cols to floats so its compatible
|
|
613
|
+
# with np.nan concatenation (does this break anything?)
|
|
614
|
+
# pdb.set_trace()
|
|
615
|
+
nanvector = nanvector.astype(float)
|
|
609
616
|
nanvector[:] = np.nan
|
|
610
617
|
group_df = pd.concat([group_df, nanvector], axis=0)
|
|
611
618
|
group_df = pd.concat([group_df, df_copy.iloc[sc_idxs[sc]]], axis=0)
|
|
@@ -1124,7 +1131,6 @@ def plot_PCA(PCA_df, PCA_info, folderinfo, cfg, plot_panel_instance):
|
|
|
1124
1131
|
)
|
|
1125
1132
|
writervideo = FFMpegWriter(fps=30) # save to m4 using ffmpeg writer
|
|
1126
1133
|
anim.save(results_dir + "PCA 3D Scatterplot.mp4", writer=writervideo)
|
|
1127
|
-
plt.close()
|
|
1128
1134
|
|
|
1129
1135
|
|
|
1130
1136
|
# %% ................ local functions #5 - prepare statistics ........................
|
|
@@ -1507,7 +1513,6 @@ def plot_permutation_test_results(
|
|
|
1507
1513
|
f.suptitle(figure_file_string, fontsize=PERM_PLOT_SUPLABEL_SIZE)
|
|
1508
1514
|
save_figures(f, results_dir, figure_file_string)
|
|
1509
1515
|
|
|
1510
|
-
plt.close(f)
|
|
1511
1516
|
# add figure to plot panel figures list
|
|
1512
1517
|
if dont_show_plots is False: # -> show plot panel
|
|
1513
1518
|
plot_panel_instance.figures.append(f)
|
|
@@ -1790,7 +1795,6 @@ def plot_multcomp_results(
|
|
|
1790
1795
|
)
|
|
1791
1796
|
save_figures(f, results_dir, figure_file_string)
|
|
1792
1797
|
|
|
1793
|
-
plt.close(f)
|
|
1794
1798
|
# add figure to plot panel figures list
|
|
1795
1799
|
if dont_show_plots is False: # -> show plot panel
|
|
1796
1800
|
plot_panel_instance.figures.append(f)
|
|
@@ -1834,6 +1838,7 @@ def plot_results(g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance):
|
|
|
1834
1838
|
plot_joint_y_by_average_SC(
|
|
1835
1839
|
g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance
|
|
1836
1840
|
)
|
|
1841
|
+
plt.close("all")
|
|
1837
1842
|
|
|
1838
1843
|
# .......................2 - x coords over average SC (optional)....................
|
|
1839
1844
|
if tracking_software == "DLC":
|
|
@@ -1846,23 +1851,27 @@ def plot_results(g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance):
|
|
|
1846
1851
|
plot_joint_x_by_average_SC(
|
|
1847
1852
|
g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance
|
|
1848
1853
|
)
|
|
1854
|
+
plt.close("all")
|
|
1849
1855
|
|
|
1850
1856
|
# ........................3 - angles over average SC................................
|
|
1851
1857
|
if angles["name"]:
|
|
1852
1858
|
plot_angles_by_average_SC(
|
|
1853
1859
|
g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance
|
|
1854
1860
|
)
|
|
1861
|
+
plt.close("all")
|
|
1855
1862
|
|
|
1856
1863
|
# .................4 - average x velocities over SC percentage......................
|
|
1857
1864
|
plot_x_velocities_by_average_SC(
|
|
1858
1865
|
g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance
|
|
1859
1866
|
)
|
|
1867
|
+
plt.close("all")
|
|
1860
1868
|
|
|
1861
1869
|
# ..............5 - average angular velocities over SC percentage...................
|
|
1862
1870
|
if angles["name"]:
|
|
1863
1871
|
plot_angular_velocities_by_average_SC(
|
|
1864
1872
|
g_avg_dfs, g_std_dfs, folderinfo, cfg, plot_panel_instance
|
|
1865
1873
|
)
|
|
1874
|
+
plt.close("all")
|
|
1866
1875
|
|
|
1867
1876
|
# ........................optional - 6 - build plot panel..........................
|
|
1868
1877
|
if cfg["dont_show_plots"] is True:
|
|
@@ -1931,7 +1940,6 @@ def plot_joint_y_by_average_SC(
|
|
|
1931
1940
|
ax.set_ylabel("Z")
|
|
1932
1941
|
figure_file_string = " - Joint Z-coord.s over average step cycle"
|
|
1933
1942
|
save_figures(f, results_dir, group_name + figure_file_string)
|
|
1934
|
-
plt.close(f)
|
|
1935
1943
|
|
|
1936
1944
|
# add figure to plot panel figures list
|
|
1937
1945
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -1980,7 +1988,6 @@ def plot_joint_y_by_average_SC(
|
|
|
1980
1988
|
ax.set_ylabel("Z")
|
|
1981
1989
|
figure_file_string = "- Z-coord.s over average step cycle"
|
|
1982
1990
|
save_figures(f, results_dir, joint + figure_file_string)
|
|
1983
|
-
plt.close(f)
|
|
1984
1991
|
|
|
1985
1992
|
# add figure to plot panel figures list
|
|
1986
1993
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2045,7 +2052,6 @@ def plot_joint_x_by_average_SC(
|
|
|
2045
2052
|
ax.set_ylabel("Y")
|
|
2046
2053
|
figure_file_string = " - Joint Y-coord.s over average step cycle"
|
|
2047
2054
|
save_figures(f, results_dir, group_name + figure_file_string)
|
|
2048
|
-
plt.close(f)
|
|
2049
2055
|
|
|
2050
2056
|
# add figure to plot panel figures list
|
|
2051
2057
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2094,7 +2100,6 @@ def plot_joint_x_by_average_SC(
|
|
|
2094
2100
|
ax.set_ylabel("Y")
|
|
2095
2101
|
figure_file_string = "- Y-coord.s over average step cycle"
|
|
2096
2102
|
save_figures(f, results_dir, joint + figure_file_string)
|
|
2097
|
-
plt.close(f)
|
|
2098
2103
|
|
|
2099
2104
|
# add figure to plot panel figures list
|
|
2100
2105
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2153,7 +2158,6 @@ def plot_angles_by_average_SC(
|
|
|
2153
2158
|
)
|
|
2154
2159
|
figure_file_string = " - Joint angles over average step cycle"
|
|
2155
2160
|
save_figures(f, results_dir, group_name + figure_file_string)
|
|
2156
|
-
plt.close(f)
|
|
2157
2161
|
|
|
2158
2162
|
# add figure to plot panel figures list
|
|
2159
2163
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2195,7 +2199,6 @@ def plot_angles_by_average_SC(
|
|
|
2195
2199
|
ax.set_title(title_leg + " " + angle + " angle over average step cycle")
|
|
2196
2200
|
figure_file_string = " - Angle over average step cycle"
|
|
2197
2201
|
save_figures(f, results_dir, angle + figure_file_string)
|
|
2198
|
-
plt.close(f)
|
|
2199
2202
|
|
|
2200
2203
|
# add figure to plot panel figures list
|
|
2201
2204
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2275,7 +2278,6 @@ def plot_x_velocities_by_average_SC(
|
|
|
2275
2278
|
)
|
|
2276
2279
|
figure_file_string = " - Joint velocities over average step cycle"
|
|
2277
2280
|
save_figures(f, results_dir, group_name + figure_file_string)
|
|
2278
|
-
plt.close(f)
|
|
2279
2281
|
|
|
2280
2282
|
# add figure to plot panel figures list
|
|
2281
2283
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2336,7 +2338,6 @@ def plot_x_velocities_by_average_SC(
|
|
|
2336
2338
|
)
|
|
2337
2339
|
figure_file_string = "- Velocities over average step cycle"
|
|
2338
2340
|
save_figures(f, results_dir, joint + figure_file_string)
|
|
2339
|
-
plt.close(f)
|
|
2340
2341
|
|
|
2341
2342
|
# add figure to plot panel figures list
|
|
2342
2343
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2400,7 +2401,6 @@ def plot_angular_velocities_by_average_SC(
|
|
|
2400
2401
|
)
|
|
2401
2402
|
figure_file_string = " - Angular velocities over average step cycle"
|
|
2402
2403
|
save_figures(f, results_dir, group_name + figure_file_string)
|
|
2403
|
-
plt.close(f)
|
|
2404
2404
|
|
|
2405
2405
|
# add figure to plot panel figures list
|
|
2406
2406
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -2449,7 +2449,6 @@ def plot_angular_velocities_by_average_SC(
|
|
|
2449
2449
|
)
|
|
2450
2450
|
figure_file_string = " - Angular Velocities over average step cycle"
|
|
2451
2451
|
save_figures(f, results_dir, angle + figure_file_string)
|
|
2452
|
-
plt.close(f)
|
|
2453
2452
|
|
|
2454
2453
|
# add figure to plot panel figures list
|
|
2455
2454
|
if dont_show_plots is False: # -> show plot panel
|
|
@@ -116,6 +116,8 @@ def simi(info, folderinfo, cfg):
|
|
|
116
116
|
all_cycles = extract_stepcycles(data, info, folderinfo, cfg)
|
|
117
117
|
all_cycles = check_stepcycles(all_cycles, info)
|
|
118
118
|
if not all_cycles: # only None if both leg's SCs were None
|
|
119
|
+
if cfg["dont_show_plots"] is False: # otherwise stuck at loading
|
|
120
|
+
plot_panel_instance.destroy_plot_panel()
|
|
119
121
|
return
|
|
120
122
|
|
|
121
123
|
# ...... main analysis: y-flipping, features, df-creation & exports ..............
|
|
@@ -1539,6 +1541,10 @@ def plot_results(results, all_cycles, info, cfg, plot_panel_instance):
|
|
|
1539
1541
|
angles = cfg["angles"]
|
|
1540
1542
|
y_acceleration = cfg["y_acceleration"]
|
|
1541
1543
|
angular_acceleration = cfg["angular_acceleration"]
|
|
1544
|
+
analyse_average_y = cfg["analyse_average_y"]
|
|
1545
|
+
dont_show_plots = cfg["dont_show_plots"]
|
|
1546
|
+
if dont_show_plots:
|
|
1547
|
+
plt.switch_backend("Agg")
|
|
1542
1548
|
|
|
1543
1549
|
# unpack - output specific vars (results to be plotted)
|
|
1544
1550
|
for legname in LEGS: # !!! NU - output...
|
|
@@ -1553,15 +1559,19 @@ def plot_results(results, all_cycles, info, cfg, plot_panel_instance):
|
|
|
1553
1559
|
)
|
|
1554
1560
|
|
|
1555
1561
|
# ........................ 2 - y coords by time ..............................
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1562
|
+
if analyse_average_y:
|
|
1563
|
+
plot_joint_y_by_time(
|
|
1564
|
+
legname, all_steps_data, all_cycles, info, cfg, plot_panel_instance
|
|
1565
|
+
)
|
|
1559
1566
|
|
|
1560
1567
|
# .................. 3 - angle by time for each SC ...........................
|
|
1561
1568
|
if angles["name"]:
|
|
1562
1569
|
plot_angles_by_time(
|
|
1563
1570
|
legname, all_steps_data, all_cycles, info, cfg, plot_panel_instance
|
|
1564
1571
|
)
|
|
1572
|
+
# regularly closing figures to save memory
|
|
1573
|
+
# => no problem to do this since we pass figure-vars to save-functions and Panel
|
|
1574
|
+
plt.close("all")
|
|
1565
1575
|
|
|
1566
1576
|
# ............................ 4 - stick diagram .............................
|
|
1567
1577
|
plot_stickdiagram(
|
|
@@ -1574,15 +1584,17 @@ def plot_results(results, all_cycles, info, cfg, plot_panel_instance):
|
|
|
1574
1584
|
)
|
|
1575
1585
|
|
|
1576
1586
|
# ................. 5 - average 5-joints' y over SC percentage ...............
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1587
|
+
if analyse_average_y:
|
|
1588
|
+
plot_joint_y_by_average_SC(
|
|
1589
|
+
legname, average_data, std_data, sc_num, info, cfg, plot_panel_instance
|
|
1590
|
+
)
|
|
1580
1591
|
|
|
1581
1592
|
# ................... 6 - average angles over SC percentage ..................
|
|
1582
1593
|
if angles["name"]:
|
|
1583
1594
|
plot_angles_by_average_SC(
|
|
1584
1595
|
legname, average_data, std_data, sc_num, info, cfg, plot_panel_instance
|
|
1585
1596
|
)
|
|
1597
|
+
plt.close("all")
|
|
1586
1598
|
|
|
1587
1599
|
# ............. 7 - average y velocities over SC percentage .................
|
|
1588
1600
|
plot_y_velocities_by_average_SC(
|
|
@@ -1613,11 +1625,12 @@ def plot_results(results, all_cycles, info, cfg, plot_panel_instance):
|
|
|
1613
1625
|
cfg,
|
|
1614
1626
|
plot_panel_instance,
|
|
1615
1627
|
)
|
|
1628
|
+
plt.close("all")
|
|
1616
1629
|
|
|
1617
1630
|
# ........................optional - 11 - build plot panel..........................
|
|
1618
|
-
if
|
|
1631
|
+
if dont_show_plots is True:
|
|
1619
1632
|
pass # going on without building the plot window
|
|
1620
|
-
elif
|
|
1633
|
+
elif dont_show_plots is False: # -> show plot panel
|
|
1621
1634
|
# Destroy loading screen and build plot panel with all figures
|
|
1622
1635
|
plot_panel_instance.destroy_plot_panel_loading_screen()
|
|
1623
1636
|
plot_panel_instance.build_plot_panel()
|
|
@@ -2597,6 +2610,10 @@ class PlotPanel:
|
|
|
2597
2610
|
f"AutoGaitA Plot Panel {self.current_fig_index+1}/{len(self.figures)}"
|
|
2598
2611
|
)
|
|
2599
2612
|
|
|
2613
|
+
def destroy_plot_panel(self):
|
|
2614
|
+
# Needed if no SCs after checks
|
|
2615
|
+
self.loading_screen.destroy()
|
|
2616
|
+
|
|
2600
2617
|
|
|
2601
2618
|
# %% local functions 5 - print finish
|
|
2602
2619
|
|
|
@@ -95,16 +95,39 @@ def extract_info(folderinfo):
|
|
|
95
95
|
postrun_string = folderinfo["postrun_string"]
|
|
96
96
|
info = {"name": [], "mouse_num": [], "run_num": []}
|
|
97
97
|
for filename in os.listdir(folderinfo["root_dir"]):
|
|
98
|
+
# make sure we don't get wrong files
|
|
98
99
|
if (
|
|
99
|
-
(premouse_string in filename)
|
|
100
|
+
(premouse_string in filename)
|
|
100
101
|
& (prerun_string in filename)
|
|
101
102
|
& (filename.endswith(".csv"))
|
|
102
103
|
):
|
|
103
|
-
#
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
# ID number - fill in "_" for user if needed
|
|
105
|
+
this_mouse_num = False
|
|
106
|
+
for candidate_postmouse_string in [
|
|
107
|
+
postmouse_string,
|
|
108
|
+
"_" + postmouse_string,
|
|
109
|
+
]:
|
|
110
|
+
try:
|
|
111
|
+
this_mouse_num = find_number(
|
|
112
|
+
filename,
|
|
113
|
+
premouse_string,
|
|
114
|
+
candidate_postmouse_string,
|
|
115
|
+
)
|
|
116
|
+
except:
|
|
117
|
+
pass
|
|
118
|
+
# Do the same for run number
|
|
119
|
+
this_run_num = False
|
|
120
|
+
for candidate_postrun_string in [
|
|
121
|
+
postrun_string,
|
|
122
|
+
"-" + postrun_string,
|
|
123
|
+
]:
|
|
124
|
+
try:
|
|
125
|
+
this_run_num = find_number(
|
|
126
|
+
filename, prerun_string, candidate_postrun_string
|
|
127
|
+
)
|
|
128
|
+
except:
|
|
129
|
+
pass
|
|
130
|
+
# if we found both an ID and a run number, create this_name & add to dict
|
|
108
131
|
this_name = "ID " + str(this_mouse_num) + " - Run " + str(this_run_num)
|
|
109
132
|
if this_name not in info["name"]: # no data/beam duplicates here
|
|
110
133
|
info["name"].append(this_name)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: autogaita
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Automatic Gait Analysis in Python
|
|
5
|
+
Home-page: https://github.com/mahan-hosseini/AutoGaitA/
|
|
6
|
+
Author: Mahan Hosseini
|
|
7
|
+
License: GPLv3
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Provides-Extra: dev
|
|
10
|
+
License-File: LICENSE
|
|
@@ -25,7 +25,7 @@ if platform.system() == "Darwin":
|
|
|
25
25
|
setup(
|
|
26
26
|
name="autogaita",
|
|
27
27
|
python_requires=">=3.10",
|
|
28
|
-
version="0.3.
|
|
28
|
+
version="0.3.1", # rc == release candidate (before release is finished)
|
|
29
29
|
author="Mahan Hosseini",
|
|
30
30
|
description="Automatic Gait Analysis in Python",
|
|
31
31
|
packages=["autogaita", "autogaita.batchrun_scripts"],
|
autogaita-0.3.0/PKG-INFO
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: autogaita
|
|
3
|
-
Version: 0.3.0
|
|
4
|
-
Summary: Automatic Gait Analysis in Python
|
|
5
|
-
Home-page: https://github.com/mahan-hosseini/AutoGaitA/
|
|
6
|
-
Author: Mahan Hosseini
|
|
7
|
-
License: GPLv3
|
|
8
|
-
Requires-Python: >=3.10
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Requires-Dist: customtkinter>=5.2
|
|
11
|
-
Requires-Dist: pandas>=2.0
|
|
12
|
-
Requires-Dist: numpy>=1.24
|
|
13
|
-
Requires-Dist: seaborn>=0.13
|
|
14
|
-
Requires-Dist: matplotlib>=3.7
|
|
15
|
-
Requires-Dist: scikit-learn>=1.2
|
|
16
|
-
Requires-Dist: pingouin>=0.5
|
|
17
|
-
Requires-Dist: scipy>=1.11
|
|
18
|
-
Requires-Dist: ffmpeg-python>=0.2
|
|
19
|
-
Requires-Dist: openpyxl>=3.1
|
|
20
|
-
Requires-Dist: pillow>=10.3
|
|
21
|
-
Requires-Dist: pyobjc
|
|
22
|
-
Provides-Extra: dev
|
|
23
|
-
Requires-Dist: pytest; extra == "dev"
|
|
24
|
-
Requires-Dist: hypothesis; extra == "dev"
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: autogaita
|
|
3
|
-
Version: 0.3.0
|
|
4
|
-
Summary: Automatic Gait Analysis in Python
|
|
5
|
-
Home-page: https://github.com/mahan-hosseini/AutoGaitA/
|
|
6
|
-
Author: Mahan Hosseini
|
|
7
|
-
License: GPLv3
|
|
8
|
-
Requires-Python: >=3.10
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Requires-Dist: customtkinter>=5.2
|
|
11
|
-
Requires-Dist: pandas>=2.0
|
|
12
|
-
Requires-Dist: numpy>=1.24
|
|
13
|
-
Requires-Dist: seaborn>=0.13
|
|
14
|
-
Requires-Dist: matplotlib>=3.7
|
|
15
|
-
Requires-Dist: scikit-learn>=1.2
|
|
16
|
-
Requires-Dist: pingouin>=0.5
|
|
17
|
-
Requires-Dist: scipy>=1.11
|
|
18
|
-
Requires-Dist: ffmpeg-python>=0.2
|
|
19
|
-
Requires-Dist: openpyxl>=3.1
|
|
20
|
-
Requires-Dist: pillow>=10.3
|
|
21
|
-
Requires-Dist: pyobjc
|
|
22
|
-
Provides-Extra: dev
|
|
23
|
-
Requires-Dist: pytest; extra == "dev"
|
|
24
|
-
Requires-Dist: hypothesis; extra == "dev"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -11,8 +11,8 @@ def dlc_singlerun():
|
|
|
11
11
|
# folderinfo
|
|
12
12
|
folderinfo = {}
|
|
13
13
|
folderinfo["root_dir"] = "/Users/mahan/sciebo/Research/AutoGaitA/Mouse/Testing/"
|
|
14
|
-
folderinfo["results_dir"] = ""
|
|
15
14
|
folderinfo["sctable_filename"] = "25mm.xlsx"
|
|
15
|
+
folderinfo["results_dir"] = ""
|
|
16
16
|
folderinfo["data_string"] = "SIMINewOct"
|
|
17
17
|
folderinfo["beam_string"] = "BeamTraining"
|
|
18
18
|
folderinfo["premouse_string"] = "Mouse"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|