handwriting_features.features.configuration package

Submodules

handwriting_features.features.configuration.mapping module

class handwriting_features.features.configuration.mapping.HandwritingFeaturesMapping(features)[source]

Bases: object

Class implementing the handwriting features mapping

map(feature_name)[source]

Map the feature name to the actual feature computation method

handwriting_features.features.configuration.settings module

class handwriting_features.features.configuration.settings.HandwritingFeaturesSettings[source]

Bases: object

Class implementing the handwriting features settings

axes = ('x', 'y', 'xy')
classmethod get_feature_argument_default(feature_name, argument_name)[source]

Gets the feature argument’s default value(s).

Parameters
  • feature_name (str) – feature name

  • argument_name (str) – argument name

Returns

argument’s default value(s)

Return type

Any

classmethod get_feature_argument_options(feature_name, argument_name)[source]

Gets the feature argument’s option(s).

Parameters
  • feature_name (str) – feature name

  • argument_name (str) – argument name

Returns

argument’s option(s)

Return type

iterable

classmethod get_feature_argument_type(feature_name, argument_name)[source]

Gets the feature argument’s supported type(s).

Parameters
  • feature_name (str) – feature name

  • argument_name (str) – argument name

Returns

argument’s type(s)

Return type

iterable

settings = {'acceleration': {'arguments': {'axis': {'default': 'xy', 'mandatory': False, 'options': ('x', 'y', 'xy'), 'type': [<class 'str'>]}, 'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'azimuth': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'jerk': {'arguments': {'axis': {'default': 'xy', 'mandatory': False, 'options': ('x', 'y', 'xy'), 'type': [<class 'str'>]}, 'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'number_of_changes_in_azimuth': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_changes_in_pressure': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_changes_in_tilt': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_changes_in_velocity_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_changes_in_x_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_changes_in_y_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'number_of_inter_stroke_intersections': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'number_of_interruptions': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'number_of_interruptions_relative': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'number_of_intra_stroke_intersections': {'arguments': {'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'pressure': {'arguments': {'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'ratio_of_stroke_durations': {'arguments': {'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'ratio_of_writing_durations': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_azimuth': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_pressure': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_tilt': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_velocity_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_x_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_changes_in_y_profile': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_inter_stroke_intersections': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'relative_number_of_intra_stroke_intersections': {'arguments': {'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'relative_total_number_of_intra_stroke_intersections': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'stroke_duration': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'stroke_height': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'stroke_length': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'stroke_width': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'tilt': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'total_number_of_intra_stroke_intersections': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'velocity': {'arguments': {'axis': {'default': 'xy', 'mandatory': False, 'options': ('x', 'y', 'xy'), 'type': [<class 'str'>]}, 'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_peaks_distance': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_peaks_duration': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_peaks_indices': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_peaks_values': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_peaks_velocity': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_valleys_distance': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_valleys_duration': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_valleys_indices': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_valleys_values': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'vertical_valleys_velocity': {'arguments': {'fs': {'mandatory': True, 'type': [<class 'int'>, <class 'float'>]}, 'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'writing_duration': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}}, 'properties': {'is_multi_valued': False}}, 'writing_duration_overall': {'arguments': {}, 'properties': {'is_multi_valued': False}}, 'writing_height': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}}, 'properties': {'is_multi_valued': False}}, 'writing_length': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}}, 'properties': {'is_multi_valued': False}}, 'writing_stops': {'arguments': {'statistics': {'mandatory': False, 'options': dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression']), 'type': [<class 'str'>, <class 'list'>, <class 'tuple'>]}}, 'properties': {'is_multi_valued': True}}, 'writing_tempo': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}}, 'properties': {'is_multi_valued': False}}, 'writing_width': {'arguments': {'in_air': {'default': False, 'mandatory': False, 'options': (True, False), 'type': [<class 'bool'>]}}, 'properties': {'is_multi_valued': False}}}
statistics = dict_keys(['mean', 'std', 'cv_parametric', 'median', 'iqr', 'cv_nonparametric', 'quartile_1', 'quartile_3', 'percentile_5', 'percentile_95', 'slope_of_linear_regression'])

Module contents