diff --git a/meson.build b/meson.build index f7113a6f..16c77b80 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'scikit-digital-health', 'c', - version: '0.17.0', + version: '0.17.1', license: 'MIT', meson_version: '>=1.1', ) diff --git a/src/skdh/activity/core.py b/src/skdh/activity/core.py index c19c4d1d..a53300a8 100644 --- a/src/skdh/activity/core.py +++ b/src/skdh/activity/core.py @@ -944,6 +944,11 @@ def predict(self, *, time, accel, fs=None, wear=None, tz_name=None, **kwargs): day_stop, ) + res['N wear wake hours'][iday] = around( + sum(dwear_stops - dwear_starts) / fs / 3600, 1 + ) + res['Wear Wake Minutes'][iday] = sum(time[dwear_stops] - time[dwear_starts]) / 60 + self._compute_wear_wake_activity( res, accel, diff --git a/src/skdh/gait/substeps/s1_preprocessing.py b/src/skdh/gait/substeps/s1_preprocessing.py index f230c3da..a834f573 100644 --- a/src/skdh/gait/substeps/s1_preprocessing.py +++ b/src/skdh/gait/substeps/s1_preprocessing.py @@ -8,6 +8,7 @@ from numpy import ( mean, nanmedian, + nanmean, argmax, sign, abs, @@ -148,9 +149,18 @@ def get_ap_axis_sign(fs, accel, ap_axis): idx = searchsorted(mn, mx[mask]) # make sure that we dont go out of bounds by adding a nan to the end mn = append(mn, nan) - left_med = nanmedian(mx[mask] - mn[idx - 1]) - right_med = nanmedian(mn[idx] - mx[mask]) - + left_bases = mx[mask] - mn[idx - 1] + right_bases = mn[idx] - mx[mask] + + left_med = nanmedian(left_bases) + right_med = nanmedian(right_bases) + + # adjust if both the same + if left_med == right_med: + pk_dist = nanmedian(diff(mx[mask])) + left_med = nanmean(left_bases[left_bases < (1.25 * pk_dist)]) + right_med = nanmean(right_bases[right_bases < (1.25 * pk_dist)]) + sign = -1 if (left_med < right_med) else 1 return sign