Finger Tapping Processor¶
- class finger_tapping_processor.FingerTappingProcessor(window=6)¶
This is the main Finger Tapping Processor class. Once the data is loaded it will be accessible at data_frame (pandas.DataFrame), where it looks like: data_frame.x, data_frame.y: components of tapping position. data_frame.x_target, data_frame.y_target their target.
These values are recommended by the author of the pilot study [KSR+15]. Check reference for more details.
window = 6 #seconds
- Example:
>>> import pdkit >>> ftp = pdkit.FingerTappingProcessor() >>> ts = pdkit.FingerTappingTimeSeries().load(path_to_data, 'ft_cloudupdrs') >>> frequency = ftp.frequency(ts)
- akinesia_times(data_frame, crop='no')¶
This method calculates akinesia times, mean dwell time on each key in milliseconds
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return at:
akinesia times
- Rtype at:
float
- Return duration:
test duration (seconds)
- Rtype duration:
float
- continuous_frequency(data_frame, crop='no')¶
This method returns continuous frequency
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return cont_freq:
frequency
- Rtype cont_freq:
float
- dysmetria_score(data_frame, crop='no')¶
This method calculates accuracy of target taps in pixels
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return ds:
dysmetria score in pixels
- Rtype ds:
float
- extract_features(data_frame, pre='', crop='no')¶
This method extracts all the features available to the Finger Tapping Processor class.
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Returns:
‘frequency’, ‘moving_frequency’,’continuous_frequency’,’mean_moving_time’,’incoordination_score’, ‘mean_alnt_target_distance’,’kinesia_scores’, ‘akinesia_times’,’dysmetria_score’
- Return type:
list
- frequency(data_frame, crop='no')¶
This method returns the number of #taps divided by the test duration
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return frequency:
frequency
- Rtype frequency:
float
- incoordination_score(data_frame, crop='no')¶
This method calculates the variance of the time interval in msec between taps
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return is:
incoordination score
- Rtype is:
float
- kinesia_scores(data_frame, crop='no')¶
This method calculates the number of key taps
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return ks:
key taps
- Rtype ks:
float
- Return duration:
test duration (seconds)
- Rtype duration:
float
- mean_alnt_target_distance(data_frame, crop='no')¶
This method calculates the distance (number of pixels) between alternate tapping
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return matd:
the mean alternate target distance in pixels
- Rtype matd:
float
- mean_moving_time(data_frame, crop='no')¶
This method calculates the mean time (ms) that the hand was moving from one target to the next
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return mmt:
the mean moving time in ms
- Rtype mmt:
float
- moving_frequency(data_frame, crop='no')¶
This method returns moving frequency
- Parameters:
data_frame (pandas.DataFrame) – the data frame
- Return diff_mov_freq:
frequency
- Rtype diff_mov_freq:
float
Finger Tapping Time Series¶
- class finger_tapping_time_series.FingerTappingTimeSeries¶
This is a wrapper class to load the Finger Tapping Time Series data.
- load(filename, format_file='ft_cloudupdrs', button_left_rect=None, button_right_rect=None)¶
This is a general load data method where the format of data to load can be passed as a parameter,
- Parameters:
filename (str) – The path to load data from
format_file (str) – format of the file. Default is CloudUPDRS. Set to mpower for mpower data.
- Return dataframe:
data_frame.x, data_frame.y: components of tapping position. data_frame.x_target, data_frame.y_target their target. data_frame.index is the datetime-like index
References
Panagiotis Kassavetis, Tabish A. Saifee, George Roussos, Loukas Drougkas, Maja Kojovic, John C. Rothwell, Mark J. Edwards, and Kailash P. Bhatia. Developing a tool for remote digital assessment of parkinson's disease. Movement Disorders Clinical Practice, 3(1):59–64, 2015.