Shoulder Physiotherapy Activity Recognition 9-Axis Dataset

Citation Author(s):
Institute of Biomedical Engineering, University of Toronto
University of Toronto Department of Surgery, Division of Orthopaedic Surgery
Sunnybrook Research Institute, Orthopaedic Biomechanics Lab, Holland Bone and Joint Program
Submitted by:
Philip Boyer
Last updated:
Fri, 12/09/2022 - 12:50
Data Format:
0 ratings - Please login to submit your rating.


Shoulder Physiotherapy Activity Recognition 9-Axis Dataset (SPARS9x) 

Suggested uses of this dataset include performing supervised classification analysis of physiotherapy exercises, or to perform out-of-distribution detection analysis with unlabeled activities of daily living data.

This dataset contains inertial data consisting of 1) physiotherapy exercise recordings, and 2) unlabeled other activity data recordings, each collected by Huawei 2 smart watches worn by healthy subjects. Subjects peform 20 repetitions of each exercise for each shoulder. Isometric exercises are kept under tension for several seconds per repetition without movement during or between repetitions.

Unlabelled activities of daily living were performed by subjects without supervision. Approximately 3 hours of other activity data were collected per subject. Note that non-exercise data that was captured between exercises has been removed.

Hint: There is a much greater amount of other activity data than exercise data, so depending on your purpose you may need to do some balancing.


(Please note that this dataset is currently only available in individual csv files for each subject as we are having difficulties uploading zipped folders. We have reached out to IEEEDataport to help us resolve this issue)

This dataset consists of 20 csv files, one for each of the subjects in the dataset (e.g. "spars9x_s0.csv" corresponds to the first subject of the dataset). These are contained in the zip file

We have also provided the dataset in a numpy array format (, consisting of a single array and 20 subarrays, one for each dataset subject. These may be loaded into memory using the load() function of the python library numpy.

Either file needs to be decompressed (unzipped) before use.

Data Labels:

0: Unlabeled Activities of Daily Living (Non-Exercise)

1: External Rotation (Isometric)

2: External Rotation in 90 Degrees Abduction in Scapula Plane

3: Internal Rotation (Isometric)

4: Extension (Isometric)

5: Abduction (Isometric)

6: Biceps Muscle Strengthening

7: Cross Chest Adduction

8: Active Flexion

9: Shoulder Girdle Stabilization with Elevation

10: Triceps Pull Downs

Data Format:

Inertial data and heart rate have been interpolated to 50 Hz (inertial sensor acquisition was approximately 50 Hz, but sensors recorded asynchronously and so interpolation was needed).

Each record consists of an Nx12 array, where numbered columns correspond to:

0-2: Accelerometer (X/Y/Z) in m/s^2

3-5: Magnetometer (X/Y/Z) in μT's

6-8: Gyroscope (X/Y/Z) in rad/s

9: Heart Rate in bpm

10: Shoulder (0 = Unlabeled, 1 = Left Shoulder, 2 = Right Shoulder)

11: Activity Label (0-10 as described above)

Note: All exercise data has left or right shoulder indicated, whereas other activity data does not. Other activity data may be assigned to left or right shoulder for analysis, or split between each as required.

Citation Request:

If using this data in academic publication, please cite the following manuscript:

Boyer, P.; Burns, D.; Whyne, C. Out-of-Distribution Detection of Human Activity Recognition with Smartwatch Inertial Sensors. Sensors 2021, 21, x.