BaseLRClassifier#

class mobgap.laterality.base.BaseLRClassifier[source]#

Base class for L/R foot classifier.

This base class should be used for all Left/Right foot classificaiton algorithms. Algorithms should implement the detect method, which will perform all relevant processing steps. The method should then return the instance of the class, with the ic_lr_list_ attribute set to the ic_list provided by the used with a new addition lr column that either contains the string left or right, indicating the laterality of the initial contact.

We allow that subclasses specify further parameters for the detect methods (hence, this baseclass supports **kwargs). However, you should only use them, if you really need them and apply active checks, that they are passed correctly. In 99% of the time, you should add a new parameter to the algorithm itself, instead of adding a new parameter to the detect method.

Other Parameters:
data

The raw IMU data passed to the detect method.

ic_list

The list of initial contacts passed to the detect method.

sampling_rate_hz

The sampling rate of the IMU data in Hz passed to the detect method.

Attributes:
ic_lr_list_

The predicted left and right foot initial contacts. The dataframe is identical to the input ic_list, but with the lr column added. The lr column specifies if the respective IC belongs to the left or the right foot.

Notes

You can use the base_lrd_docfiller decorator to fill common parts of the docstring for your subclass. See the source of this class for an example.

Methods

clone()

Create a new instance of the class with all parameters copied over.

get_params([deep])

Get parameters for this algorithm.

predict(data, ic_list, *, sampling_rate_hz, ...)

Assign a left/right label to each initial contact in the passed data..

self_optimize(data_sequences, ...)

Optimize the internal parameters of the algorithm.

set_params(**params)

Set the parameters of this Algorithm.

__init__(*args, **kwargs)#
clone() Self[source]#

Create a new instance of the class with all parameters copied over.

This will create a new instance of the class itself and all nested objects

get_params(deep: bool = True) dict[str, Any][source]#

Get parameters for this algorithm.

Parameters:
deep

Only relevant if object contains nested algorithm objects. If this is the case and deep is True, the params of these nested objects are included in the output using a prefix like nested_object_name__ (Note the two “_” at the end)

Returns:
params

Parameter names mapped to their values.

predict(
data: DataFrame,
ic_list: DataFrame,
*,
sampling_rate_hz: float,
**kwargs: Unpack[dict[str, Any]],
) Self[source]#

Assign a left/right label to each initial contact in the passed data..

Parameters:
data

The raw IMU of a single sensor. This should usually represent a single gait sequence or walking bout.

ic_list

The list of initial contacts within the data. The ic_list is expected to have a column ic with the indices of the detected initial contacts relative to the start of the passed data.

sampling_rate_hz

The sampling rate of the IMU data in Hz.

Returns:
self

The instance of the class with the ic_lr_list_ attribute set to the passed ICs with a new left/right column.

self_optimize(
data_sequences: Iterable[DataFrame],
ic_list_per_sequence: Iterable[DataFrame],
ref_ic_lr_list_per_sequence: Iterable[DataFrame],
*,
sampling_rate_hz: float | Iterable[float],
**kwargs: Unpack[dict[str, Any]],
) Self[source]#

Optimize the internal parameters of the algorithm.

This is only relevant for algorithms that have a special internal optimization approach (like ML based algos).

Parameters:
data_sequences

A sequence/iterable/list of dataframes, each containing the raw IMU data of a single sensor. Each sequence should usually contain the data of a single gait sequence/walking bout. The optimization will be performed over all sequences combined.

ic_list_per_sequence

A sequence/iterable/list of gsd-list, each containing the list of detected ics for the respective data sequence. The ic_list is expected to have a column ic with the indices of the detected initial contacts relative to the start of the each passed data sequence.

ref_ic_lr_list_per_sequence

A sequence/iterable/list of reference ic_lr_list, each containing the reference left/right initial contacts. They are expected to have the exact same structure as the ic_lists passed as ic_list_per_sequence, but should contain the ground-truth left/right labels in a additional column called lr_label. They are used as ground-truth to validate the output of the algorithm during optimization.

sampling_rate_hz

The sampling rate of the IMU data in Hz. This can either be a single float, in case all sequences have the same sampling rate, or a sequence of floats, in case the sampling rate differs between the sequences.

Returns:
self

The instance of the class with the internal parameters optimized.

set_params(**params: Any) Self[source]#

Set the parameters of this Algorithm.

To set parameters of nested objects use nested_object_name__para_name=.

Examples using mobgap.laterality.base.BaseLRClassifier#

The Mobilise-D pipeline: Step-by-Step Breakdown

The Mobilise-D pipeline: Step-by-Step Breakdown

McCamley L/R Classifier

McCamley L/R Classifier

Ullrich L/R Classifier

Ullrich L/R Classifier

LRC Evaluation

LRC Evaluation