{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tremor analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial shows how to run the tremor pipeline to obtain aggregated tremor measures from gyroscope sensor data. Before following along, make sure all data preparation steps have been followed in the data preparation tutorial. \n", "\n", "In this tutorial, we use two days of data from a participant of the Personalized Parkinson Project to demonstrate the functionalities. Since `ParaDigMa` expects contiguous time series, the collected data was stored in two segments each with contiguous timestamps. Per segment, we load the data and perform the following steps:\n", "1. Preprocess the time series data\n", "2. Extract tremor features\n", "3. Detect tremor\n", "4. Quantify tremor\n", "\n", "We then combine the output of the different segments for the final step:\n", "\n", "5. Compute aggregated tremor measures" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load example data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we start by loading a single contiguous time series (segment), for which we continue running steps 1-3. [Below](#multiple_segments_cell) we show how to run these steps for multiple segments.\n", "\n", "We use the interally developed `TSDF` ([documentation](https://biomarkersparkinson.github.io/tsdf/)) to load and store data [[1](https://arxiv.org/abs/2211.11294)]. Depending on the file extension of your time series data, examples of other Python functions for loading the data into memory include:\n", "- _.csv_: `pandas.read_csv()` ([documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html))\n", "- _.json_: `json.load()` ([documentation](https://docs.python.org/3/library/json.html#json.load))" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | time | \n", "accelerometer_x | \n", "accelerometer_y | \n", "accelerometer_z | \n", "gyroscope_x | \n", "gyroscope_y | \n", "gyroscope_z | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "0.000000 | \n", "-0.474641 | \n", "-0.379426 | \n", "0.770335 | \n", "0.000000 | \n", "1.402439 | \n", "0.243902 | \n", "
1 | \n", "0.009933 | \n", "-0.472727 | \n", "-0.378947 | \n", "0.765072 | \n", "0.426829 | \n", "0.670732 | \n", "-0.121951 | \n", "
2 | \n", "0.019867 | \n", "-0.471770 | \n", "-0.375598 | \n", "0.766986 | \n", "1.158537 | \n", "-0.060976 | \n", "-0.304878 | \n", "
3 | \n", "0.029800 | \n", "-0.472727 | \n", "-0.375598 | \n", "0.770335 | \n", "1.158537 | \n", "-0.548780 | \n", "-0.548780 | \n", "
4 | \n", "0.039733 | \n", "-0.475120 | \n", "-0.379426 | \n", "0.772249 | \n", "0.670732 | \n", "-0.609756 | \n", "-0.731707 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
3455326 | \n", "34339.561333 | \n", "-0.257895 | \n", "-0.319139 | \n", "-0.761244 | \n", "159.329269 | \n", "14.634146 | \n", "-28.658537 | \n", "
3455327 | \n", "34339.571267 | \n", "-0.555502 | \n", "-0.153110 | \n", "-0.671292 | \n", "125.060976 | \n", "-213.902440 | \n", "-19.329268 | \n", "
3455328 | \n", "34339.581200 | \n", "-0.286124 | \n", "-0.263636 | \n", "-0.981340 | \n", "158.658537 | \n", "-328.170733 | \n", "-3.170732 | \n", "
3455329 | \n", "34339.591133 | \n", "-0.232536 | \n", "-0.161722 | \n", "-0.832536 | \n", "288.841465 | \n", "-281.707318 | \n", "17.073171 | \n", "
3455330 | \n", "34339.601067 | \n", "0.180383 | \n", "-0.368421 | \n", "-1.525837 | \n", "376.219514 | \n", "-140.853659 | \n", "37.256098 | \n", "
3455331 rows × 7 columns
\n", "\n", " | time | \n", "gyroscope_x | \n", "gyroscope_y | \n", "gyroscope_z | \n", "
---|---|---|---|---|
0 | \n", "0.00 | \n", "0.000000 | \n", "1.402439 | \n", "0.243902 | \n", "
1 | \n", "0.01 | \n", "0.432231 | \n", "0.665526 | \n", "-0.123434 | \n", "
2 | \n", "0.02 | \n", "1.164277 | \n", "-0.069584 | \n", "-0.307536 | \n", "
3 | \n", "0.03 | \n", "1.151432 | \n", "-0.554928 | \n", "-0.554223 | \n", "
4 | \n", "0.04 | \n", "0.657189 | \n", "-0.603207 | \n", "-0.731570 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
3433956 | \n", "34339.56 | \n", "130.392434 | \n", "29.491627 | \n", "-26.868202 | \n", "
3433957 | \n", "34339.57 | \n", "135.771133 | \n", "-184.515525 | \n", "-21.544211 | \n", "
3433958 | \n", "34339.58 | \n", "146.364103 | \n", "-324.248909 | \n", "-5.248641 | \n", "
3433959 | \n", "34339.59 | \n", "273.675024 | \n", "-293.011330 | \n", "14.618256 | \n", "
3433960 | \n", "34339.60 | \n", "372.878731 | \n", "-158.516265 | \n", "35.330770 | \n", "
3433961 rows × 4 columns
\n", "\n", " | time | \n", "mfcc_1 | \n", "mfcc_2 | \n", "mfcc_3 | \n", "mfcc_4 | \n", "mfcc_5 | \n", "mfcc_6 | \n", "mfcc_7 | \n", "mfcc_8 | \n", "mfcc_9 | \n", "mfcc_10 | \n", "mfcc_11 | \n", "mfcc_12 | \n", "freq_peak | \n", "below_tremor_power | \n", "tremor_power | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0.0 | \n", "5.323582 | \n", "1.179579 | \n", "-0.498552 | \n", "-0.149152 | \n", "-0.063535 | \n", "-0.132090 | \n", "-0.112380 | \n", "-0.044326 | \n", "-0.025917 | \n", "0.116045 | \n", "0.169869 | \n", "0.213884 | \n", "3.75 | \n", "0.082219 | \n", "0.471588 | \n", "
1 | \n", "4.0 | \n", "5.333162 | \n", "1.205712 | \n", "-0.607844 | \n", "-0.138371 | \n", "-0.039518 | \n", "-0.137703 | \n", "-0.069552 | \n", "-0.008029 | \n", "-0.087711 | \n", "0.089844 | \n", "0.152380 | \n", "0.195165 | \n", "3.75 | \n", "0.071260 | \n", "0.327252 | \n", "
2 | \n", "8.0 | \n", "5.180974 | \n", "1.039548 | \n", "-0.627100 | \n", "-0.054816 | \n", "-0.016767 | \n", "-0.044817 | \n", "0.079859 | \n", "-0.023155 | \n", "0.024729 | \n", "0.104989 | \n", "0.126502 | \n", "0.192319 | \n", "7.75 | \n", "0.097961 | \n", "0.114138 | \n", "
3 | \n", "12.0 | \n", "5.290298 | \n", "1.183957 | \n", "-0.627651 | \n", "-0.027235 | \n", "0.095184 | \n", "-0.050455 | \n", "-0.024654 | \n", "0.029754 | \n", "-0.007459 | \n", "0.125700 | \n", "0.146895 | \n", "0.220589 | \n", "7.75 | \n", "0.193237 | \n", "0.180988 | \n", "
4 | \n", "16.0 | \n", "5.128074 | \n", "1.066869 | \n", "-0.622282 | \n", "0.038557 | \n", "-0.034719 | \n", "0.045109 | \n", "0.076679 | \n", "0.057267 | \n", "-0.024619 | \n", "0.131755 | \n", "0.177849 | \n", "0.149686 | \n", "7.75 | \n", "0.156469 | \n", "0.090009 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
8579 | \n", "34316.0 | \n", "7.071408 | \n", "-0.376556 | \n", "0.272322 | \n", "0.068750 | \n", "0.051588 | \n", "0.102012 | \n", "0.055017 | \n", "0.115942 | \n", "0.012746 | \n", "0.117970 | \n", "0.073279 | \n", "0.057367 | \n", "13.50 | \n", "48.930380 | \n", "91.971686 | \n", "
8580 | \n", "34320.0 | \n", "1.917642 | \n", "0.307927 | \n", "0.142330 | \n", "0.265357 | \n", "0.285635 | \n", "0.143886 | \n", "0.259636 | \n", "0.195724 | \n", "0.176947 | \n", "0.162205 | \n", "0.147897 | \n", "0.170488 | \n", "11.00 | \n", "0.012123 | \n", "0.000316 | \n", "
8581 | \n", "34324.0 | \n", "2.383806 | \n", "0.268580 | \n", "0.151254 | \n", "0.414430 | \n", "0.241540 | \n", "0.244071 | \n", "0.201109 | \n", "0.209611 | \n", "0.097146 | \n", "0.048798 | \n", "0.013239 | \n", "0.035379 | \n", "2.00 | \n", "0.013077 | \n", "0.000615 | \n", "
8582 | \n", "34328.0 | \n", "1.883626 | \n", "0.089983 | \n", "0.196880 | \n", "0.300523 | \n", "0.239185 | \n", "0.259342 | \n", "0.277586 | \n", "0.206517 | \n", "0.178499 | \n", "0.215561 | \n", "0.067234 | \n", "0.123958 | \n", "13.75 | \n", "0.011466 | \n", "0.000211 | \n", "
8583 | \n", "34332.0 | \n", "2.599103 | \n", "0.286252 | \n", "-0.014529 | \n", "0.475488 | \n", "0.229446 | \n", "0.188200 | \n", "0.173689 | \n", "0.033262 | \n", "0.138957 | \n", "0.106176 | \n", "0.036859 | \n", "0.082178 | \n", "12.50 | \n", "0.015068 | \n", "0.000891 | \n", "
8584 rows × 16 columns
\n", "\n", " | time | \n", "pred_tremor_proba | \n", "pred_tremor_logreg | \n", "pred_arm_at_rest | \n", "pred_tremor_checked | \n", "
---|---|---|---|---|---|
0 | \n", "0.0 | \n", "0.038968 | \n", "1 | \n", "1 | \n", "1 | \n", "
1 | \n", "4.0 | \n", "0.035365 | \n", "1 | \n", "1 | \n", "1 | \n", "
2 | \n", "8.0 | \n", "0.031255 | \n", "1 | \n", "1 | \n", "0 | \n", "
3 | \n", "12.0 | \n", "0.021106 | \n", "0 | \n", "1 | \n", "0 | \n", "
4 | \n", "16.0 | \n", "0.021078 | \n", "0 | \n", "1 | \n", "0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
8579 | \n", "34316.0 | \n", "0.000296 | \n", "0 | \n", "1 | \n", "0 | \n", "
8580 | \n", "34320.0 | \n", "0.000089 | \n", "0 | \n", "1 | \n", "0 | \n", "
8581 | \n", "34324.0 | \n", "0.000023 | \n", "0 | \n", "1 | \n", "0 | \n", "
8582 | \n", "34328.0 | \n", "0.000053 | \n", "0 | \n", "1 | \n", "0 | \n", "
8583 | \n", "34332.0 | \n", "0.000049 | \n", "0 | \n", "1 | \n", "0 | \n", "
8584 rows × 5 columns
\n", "\n", " | time | \n", "time_dt | \n", "pred_arm_at_rest | \n", "pred_tremor_checked | \n", "tremor_power | \n", "
---|---|---|---|---|---|
0 | \n", "0.0 | \n", "2019-08-20 12:39:16+02:00 | \n", "1 | \n", "1 | \n", "0.471588 | \n", "
1 | \n", "4.0 | \n", "2019-08-20 12:39:20+02:00 | \n", "1 | \n", "1 | \n", "0.327252 | \n", "
2 | \n", "8.0 | \n", "2019-08-20 12:39:24+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
3 | \n", "12.0 | \n", "2019-08-20 12:39:28+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
4 | \n", "16.0 | \n", "2019-08-20 12:39:32+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
8579 | \n", "34316.0 | \n", "2019-08-20 22:11:12+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
8580 | \n", "34320.0 | \n", "2019-08-20 22:11:16+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
8581 | \n", "34324.0 | \n", "2019-08-20 22:11:20+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
8582 | \n", "34328.0 | \n", "2019-08-20 22:11:24+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
8583 | \n", "34332.0 | \n", "2019-08-20 22:11:28+02:00 | \n", "1 | \n", "0 | \n", "NaN | \n", "
8584 rows × 5 columns
\n", "