Granular Data
Each data source provides unique granular data points based on its data structure and method of data capture. ROOK standardizes granular data into one of three types. Soon, you will be able to decide whether granular data is enabled or disabled, allowing you to customize your JSON to your preference.
1. Instantaneous Granular Data:
Instantaneous granular data captures precise measurements or events at specific moments, directly corresponding with recorded timestamps.
For example, the sample below demonstrates two instances where a smartwatch recorded heart rate (HR) in beats per minute (bpm). HR is typically calculated by measuring the R-R interval, rather than by counting all beats over a full minute.
"hr_granular_data_array": [
{
"hr_bpm_int": 68,
"datetime_string": "2022-10-28T19:35:03.308Z"
"interval_duration_seconds_float": 0
},
{
"hr_bpm_int": 71,
"datetime_string": "2022-10-28T19:35:04.308Z"
"interval_duration_seconds_float": 0
}
]
Each object in the steps_granular_data_array represents a five-minute interval. The steps_int attribute indicates the total number of steps taken during that interval, the datetime_string attribute represents the start time of the interval, and the interval_duration_seconds_float attribute specifies the length of the interval in seconds.
2. Aggregated Granular Data:
Aggregated granular data summarizes measurements or events occurring within defined time intervals.
For example, the code snippet below shows two instances where a smartwatch aggregated step counts over five-minute intervals.
"steps_granular_data_array": [
{
"steps_int": 156,
"datetime_string": "2023-10-28T15:26:00.000Z",
"interval_duration_seconds_float": 300
},
{
"steps_int": 200,
"datetime_string": "2023-10-28T15:31:02.000Z",
"interval_duration_seconds_float": 300
}
]
Each object in the steps_granular_data_array represents a five-minute interval. The steps_int attribute indicates the total number of steps taken during that interval, the datetime_string attribute represents the start time of the interval, and the interval_duration_seconds_float attribute specifies the length of the interval in seconds.
3. Annotated Aggregated Granular Data:
Annotated aggregated granular data adds context or labels to measurements within specified intervals, aiding interpretation.
For example, the code snippet below demonstrates two instances where exercise intensity levels were recorded over varying intervals. Each instance includes labels indicating the intensity level (Light, Moderate, Vigorous) and the body region where the measurement was taken (e.g., Arm, Leg).
"activity_level_granular_data_array": [
{
"datetime_string": "2022-10-28T19:35:03.307Z",
"activity_level_float": 2,
"activity_level_label_string": "Light",
"interval_duration_seconds_float": 436
},
{
"datetime_string": "2022-10-28T19:35:03.307Z",
"activity_level_float": 3,
"activity_level_label_string": "Moderate",
"interval_duration_seconds_float": 65
}
]
Each object in the activity_level_granular_data_array represents a time interval with associated activity information. The datetime_string attribute indicates the start time of the interval, the activity_level_float attribute represents the numerical activity intensity level, the activity_level_label_string attribute provides a textual description of the intensity (e.g., Light, Moderate, Vigorous), the body_region_string attribute specifies the body part where the activity was measured, and the interval_duration_seconds_float attribute indicates the length of the interval in seconds.
Which data sources provide granular data, and which do not?
ROOK extracts granular data from:
Apple Health
Fitbit
Garmin
Health Connect
Oura
Also, if you’d like to review the data we extract from each data source, you can check our documentation.
Note: We have collected JSON files of up to 3.1M, so please take the necessary precautions when handling granular data.