Kinetics (.kin)#

Contains functions for working with measurement wheel (Optipush and SMARTwheel) and ergometer (Esseda) data You will usually only need the top-level function auto_process.

worklab.kin.auto_process(data, wheelsize=0.31, rimsize=0.27, sfreq=200, co_f=15, ord_f=2, co_s=6, ord_s=2, force=True, speed=True, variable='torque', cutoff=0.0, wl=201, ord_a=2, minpeak=5.0)[source]#

Top level processing function that performs all processing steps for mw/ergo data.

Contains all signal processing steps in fixed order. It is advised to use this function for all (pre-)processing. If needed to take a look at a specific function to see how it works.

Parameters
  • data (pd.DataFrame, dict) – raw ergometer or measurement wheel data

  • wheelsize (float) – wheel radius [m]

  • rimsize (float) – handrim radius [m]

  • sfreq (int) – sample frequency [Hz]

  • co_f (int) – cutoff frequency force filter [Hz]

  • ord_f (int) – order force filter [..]

  • co_s (int) – cutoff frequency force filter [Hz]

  • ord_s (int) – order speed filter [..]

  • force (bool) – force filter toggle, default is True

  • speed (bool) – speed filter toggle, default is True

  • variable (str) – variable name used for peak (push) detection

  • cutoff (float) – noise level for peak (push) detection

  • wl (int) – window length angle filter

  • ord_a (int) – order angle filter [..]

  • minpeak (float) – min peak height for peak (push) detection

Returns

  • data (pd.DataFrame, dict)

  • pushes (pd.DataFrame, dict)

worklab.kin.camber_correct(data, ang)[source]#

Correct for camber angle in measurement wheel data

Parameters
  • data (pd.DataFrame()) – measurement wheel data with forces/torques in 3D

  • ang (int) – camber angle to correct

Returns

data – measurement wheel data with forces/torques in 3D corrected for camber angle

Return type

pd.DataFrame()

worklab.kin.filter_ergo(data, co_f=15.0, ord_f=2, co_s=6.0, ord_s=2, force=True, speed=True)[source]#

Filters ergometer data.

Filters raw ergometer data. Should be used before further processing.

Parameters
  • data (dict) – raw measurement wheel data

  • co_f (float) – cutoff frequency force filter [Hz]

  • ord_f (int) – order force filter [..]

  • co_s (float) – cutoff frequency speed filter [Hz]

  • ord_s (int) – order speed filter [..]

  • force (bool) – force filter toggle, default is True

  • speed (bool) – speed filter toggle, default is True

Returns

data – Same data but filtered.

Return type

dict

worklab.kin.filter_mw(data, sfreq=200.0, co_f=15.0, ord_f=2, wl=201, ord_a=2, force=True, speed=True)[source]#

Filters measurement wheel data.

Filters raw measurement wheel data. Should be used before further processing.

Parameters
  • data (pd.DataFrame) – raw measurement wheel data

  • sfreq (float) – sample frequency [Hz]

  • co_f (float) – cutoff frequency force filter [Hz]

  • ord_f (int) – order force filter [..]

  • wl (int) – window length angle filter

  • ord_a (int) – order angle filter [..]

  • force (bool) – force filter toggle, default is True

  • speed (bool) – speed filter toggle, default is True

Returns

  • data (pd.DataFrame)

  • Same data but filtered.

worklab.kin.process_ergo(data, wheelsize=0.31, rimsize=0.275)[source]#

Basic processing for ergometer data.

Basic processing for ergometer data (e.g. speed to distance). Should be performed after filtering. Added columns:

Column

Data

Unit

angle

angle

rad

aspeed

angular velocity

rad/s

acc

acceleration

m/s^2

dist

cumulative distance

m

power

power

W

work

instantaneous work

J

uforce

effective force

N

torque

torque around wheel

Nm

Note

the force column contains force on the wheels, uforce (user force) is force on the handrim

Parameters
  • data (dict) – raw ergometer data

  • wheelsize (float) – wheel radius [m]

  • rimsize (float) – handrim radius [m]

Returns

data

Return type

dict

See also

com.load_esseda

worklab.kin.process_mw(data, wheelsize=0.31, rimsize=0.275, sfreq=200)[source]#

Basic processing for measurement wheel data.

Basic processing for measurement wheel data (e.g. speed to distance). Should be performed after filtering. Added columns:

Column

Data

Unit

aspeed

angular velocity

rad/s

speed

velocity

m/s

dist

cumulative distance

m

acc

acceleration

m/s^2

ftot

total combined force

N

uforce

effective force

N

force

force on wheel

N

power

power

W

work

instantaneous work

J

Parameters
  • data (pd.DataFrame) – raw measurement wheel data

  • wheelsize (float) – wheel radius [m]

  • rimsize (float) – handrim radius [m]

  • sfreq (int) – sample frequency [Hz]

Returns

data

Return type

pd.DataFrame

worklab.kin.push_by_push_ergo(data, variable='power', cutoff=0.0, minpeak=50.0, mindist=5, verbose=True)[source]#

Push-by-push analysis for wheelchair ergometer data.

Push detection and push-by-push analysis for ergometer data. Returns a pandas DataFrame with:

Column

Data

Unit

start/stop/peak

respective indices

tstart/tstop/tpeak

respective samples

s

cangle

contact angle

rad

cangle_deg

contact angle

degrees

mean/maxpower

power per push

W

mean/maxtorque

torque per push

Nm

mean/maxforce

force per push

N

mean/maxuforce

(rim) force per push

N

mean/maxspeed

velocity per push

ms

work

work per push

J

cwork

work per cycle

J

negwork

negative work/cycle

J

slope

slope onset to peak

Nm/s

smoothness

mean/peak force

ptime

push time

s

ctime

cycle time

s

reltime

relative push/cycle

%

Parameters
  • data (dict) – wheelchair ergometer dictionary with left, right and mean DataFrame

  • variable (str) – variable name used for peak (push) detection, default = power

  • cutoff (float) – noise level for peak (push) detection, default = 0

  • minpeak (float) – min peak height for peak (push) detection, default = 50.0

  • mindist (int) – minimum sample distance between peak candidates, can be used to speed up algorithm

  • verbose (Boolean) – can be used to print out the number of pushes for left, right and mean, default = True

Returns

pbp – dictionary with left, right and mean push-by-push DataFrame

Return type

dict

worklab.kin.push_by_push_mw(data, variable='torque', cutoff=0.0, minpeak=5.0, mindist=5, verbose=True)[source]#

Push-by-push analysis for measurement wheel data.

Push detection and push-by-push analysis for measurement wheel data. Returns a pandas DataFrame with:

Column

Data

Unit

start/stop/peak

respective indices

tstart/tstop/tpeak

respective samples

s

cangle

contact angle

rad

cangle_deg

contact angle

degrees

mean/maxpower

power per push

W

mean/maxtorque

torque per push

Nm

mean/maxforce

force per push

N

mean/maxuforce

(rim) force per push

N

mean/maxfeff

feffective per push

%

mean/maxftot

ftotal per push

N

work

work per push

J

cwork

work per cycle

J

negwork

negative work/cycle

J

slope

slope onset to peak

Nm/s

smoothness

mean/peak force

ptime

push time

s

ctime

cycle time

s

reltime

relative push/cycle

%

Parameters
  • data (pd.DataFrame) – measurement wheel DataFrame

  • variable (str) – variable name used for peak (push) detection

  • cutoff (float) – noise level for peak (push) detection

  • minpeak (float) – min peak height for peak (push) detection

  • mindist (int) – minimum sample distance between peak candidates, can be used to speed up algorithm

  • verbose (Boolean) – can be used to print out the number of pushes, default = True

Returns

pbp – push-by-push DataFrame

Return type

pd.DataFrame