Hexoskin
Integrating Hexoskin's advanced biometric shirts with Avicenna offers researchers comprehensive physiological monitoring. This integration enables the collection of detailed cardiorespiratory, activity, and sleep data for in-depth health analysis and research insights.
Supported Hexoskin Metrics in Avicenna
For a detailed explanation on how these metrics are defined and collected, please refer to the Hexoskin API version 3.3.x.
Some metrics, particularly those related to Heart Rate Variability (HRV) and
Sleep Stages (e.g., ANN
, HRV_HF
, HRV_LF
, HRV_LF_NORMALIZED
,
HRV_TRIANGULAR
, NN_INTERVAL
, NN_OVER_RR
, SDNN
, SLEEP_PHASE
), require
specific activity types like Rest, Sleep, or 5-Minute Rest Test to
be actively recorded or tagged for calculation.
These activities must be initiated by the participant using the Hexoskin mobile app during the recording session or tagged later on the Hexoskin Dashboard. If these specific activities are not recorded/tagged, the dependent metrics will not be computed by Hexoskin servers and will therefore be unavailable in the data collected by Avicenna, even if the raw sensor data (like ECG) was captured. Ensure participants are instructed accordingly if these metrics are crucial for your study.
Below is a list of Hexoskin metrics supported in Avicenna. Each metric includes details about its parameters and sampling rates.
-
Acceleration X: Measures acceleration along the x-axis. Sampled at 64 Hz with 13-bit resolution (3.90625 mG) and a dynamic range of ±16G. Values are stored in G/256 units (divide by 256 to convert to G-force). Internally stored as
acceleration_x
. -
Acceleration Y: Measures acceleration along the y-axis. Sampled at 64 Hz with 13-bit resolution (3.90625 mG) and a dynamic range of ±16G. Values are stored in G/256 units (divide by 256 to convert to G-force). Internally stored as
acceleration_y
. -
Acceleration Z: Measures acceleration along the z-axis. Sampled at 64 Hz with 13-bit resolution (3.90625 mG) and a dynamic range of ±16G. Values are stored in G/256 units (divide by 256 to convert to G-force). Internally stored as
acceleration_z
. -
Activity: Represents activity level based on accelerometer intensity. Calculated using a high-pass filter (2.65 Hz) on all three axes and averaged over the last second. Sampled at 1 Hz with 3.9 mG resolution and ±16G dynamic range. Values are stored in G/256 units (divide by 256 to convert to G-force). Internally stored as
activity
. -
ANN: Average NN Interval. This is the average of valid
NN Interval
values (see below) over the last 5 minutes, measured in seconds. Calculated at 1/300 Hz. Internally stored asann
. -
Breathing Rate: Measures respiratory frequency in respirations per minute (RPM). Calculated as the average of the last 7 respirations, sampled at 1 Hz. Valid range is 2-60 RPM; values outside this range are clipped (values > 60 become 60, values < 2 become 2). Internally stored as
breathing_rate
. -
Breathing Rate Quality: Assesses the quality of respiratory measurements. Updated at 1 Hz. Internally stored as
breathing_rate_quality
. It includes the following status flags (0 = false, 1 = true):RESP_STATUS_OK
: Good quality respiratory signal.RESP_STATUS_NO_A
: Thoracic sensor disconnected (signal zero for 2 seconds).RESP_STATUS_NO_B
: Abdominal sensor disconnected (signal zero for 2 seconds).RESP_STATUS_BASELINE_A
: Thoracic baseline changed significantly.RESP_STATUS_BASELINE_B
: Abdominal baseline changed significantly.RESP_STATUS_NOISY_A
: Thoracic signal is noisy (high-frequency content).RESP_STATUS_NOISY_B
: Abdominal signal is noisy (high-frequency content).
-
Cadence: Measures walking or running pace in steps per minute. Averaged over the last 7 strides using a low-pass filter (0.17 Hz), sampled at 1 Hz. Valid range is 30-240 steps per minute; values > 240 are clipped to 240, values < 30 are set to 0. Internally stored as
cadence
. -
Device Position: Detects the orientation and placement of the smart garment using accelerometer data. Recorded asynchronously (only when position changes). Internally stored as
device_position
. Possible values:Value Device Position 0 Undefined 1 Blue LED upward (y-axis up) 2 Blue LED downward (-y-axis up) 3 Face downward (z-axis up) 4 Face upward (-z-axis up) 5 Wire downward (x-axis up) 6 Wire upward (-x-axis up) -
ECG 1: Measures the electrical activity of the heart. Sampled at 256 Hz using a band-pass filter (1.6-33.9 Hz). Resolution is 6.4 μV, dynamic range is 26 mV. Values are stored in _μV _ 6.4* units. Internally stored as
ecg_1
. -
Energy Mifflin-Keytel: Estimates total energy expenditure based on ECG data using Mifflin and Keytel equations. Adjusted for user's weight, height, sex, and heart rate limits. Updated at 1 Hz, measured in Watts. Internally stored as
energy_mifflin_keytel
. -
Expiration: Detects the start of the breathing cycle's exhalation phase. Calculated from thoracic and abdominal sensor data. Recorded asynchronously. Quality is assessed by
Breathing Rate Quality
. Internally stored asexpiration
. -
Heart Rate: Measures real-time cardiac frequency in beats per minute (BPM). Calculated as the average of the last 16 heartbeats based on RR intervals from ECG data. Updated at 1 Hz. Valid range is 30-220 BPM. Initialized at 70 BPM; maintains the last valid value during invalid detections. Quality is assessed by
Heart Rate Quality
. Internally stored asheart_rate
. -
Heart Rate Quality: Assesses the quality of heart rate measurements. Updated at 1 Hz. Internally stored as
heart_rate_quality
. Includes the following status flags (0 = false, 1 = true):ECG_STATUS_OK
: ECG good quality.ECG_FOR_FUTURE_USE
: Reserved.ECG_STATUS_DISCONNECTED
: Shirt disconnected.ECG_STATUS_50_60HZ
: 50-60 Hz noise dominant in ECG.ECG_STATUS_SATURATED
: ECG signal saturated.ECG_STATUS_ARTIFACTS
: Movement artifacts affecting RR intervals.ECG_STATUS_UNRELIABLE_RR
: ECG okay, but some RR intervals are unreliable (outside 30-220 BPM range).
-
HRV HF: High-Frequency component of heart rate variability. Measures power in the 0.15-0.4 Hz range using valid NN intervals from the last 300 seconds. Calculated every 5 minutes (1/300 Hz). Measured in milliseconds squared (ms²). Values are stored in ms²/10 units (divide by 10 for ms²). Returns 0 if insufficient valid intervals exist. Internally stored as
hrv_hf
. -
HRV LF: Low-Frequency component of heart rate variability. Measures power in the 0.04-0.15 Hz range using valid NN intervals from the last 300 seconds. Calculated every 5 minutes (1/300 Hz). Measured in milliseconds squared (ms²). Values are stored in ms²/10 units (divide by 10 for ms²). Returns 0 if insufficient valid intervals exist. Internally stored as
hrv_lf
. -
HRV LF Normalized: Relative Low-Frequency power of heart rate variability. Calculated as the LF/(LF+HF) ratio using valid NN intervals from the last 300 seconds. Updated every 5 minutes (1/300 Hz). Values are stored in 1/10000 units (divide by 10000 for the ratio). Returns 0 if insufficient valid intervals exist. Internally stored as
hrv_lf_normalized
. -
HRV Triangular: Geometric measure of heart rate variability. Calculated as the triangular index of valid NN intervals over the last 5 minutes. Updated every 5 minutes (1/300 Hz). Values are stored in percent units (divide by 100 for decimal). Internally stored as
hrv_triangular
. -
Inspiration: Detects the start of the breathing cycle's inhalation phase. Calculated from thoracic and abdominal sensor data. Recorded asynchronously. Quality is assessed by
Breathing Rate Quality
. Internally stored asinspiration
. -
Minute Ventilation: Measures the volume of air exchanged per minute in mL/min. Calculated as the average volume inspired during the last 7 complete respiration cycles. Updated at 1 Hz. Values are stored in _mL/min _ 13.28* units (divide by 13.28 for mL/min). Internally stored as
minute_ventilation
. -
Minute Ventilation Adjusted: Personalized minute ventilation measurement in cL/min (centiliters per minute). Calculated like
Minute Ventilation
but adjusted for the user profile. Updated at 1 Hz. Values are stored in cL/min units (multiply by 10 for mL/min). Internally stored asminute_ventilation_adjusted
. -
NN Interval: Measures the duration between normal consecutive heartbeats (QRS complexes), excluding unreliable intervals. Valid range is 0.265s to 4s. Updated asynchronously based on QRS detection. Values are stored in second/256 units (divide by 256 for seconds). Internally stored as
nn_interval
. -
NN Over RR: Assesses heart rhythm regularity. Calculated as the ratio of normal intervals (NN) to all RR intervals over the last 5 minutes. Updated every 5 minutes (1/300 Hz). Measured in percent. Values are stored in 1/10000 units (divide by 10000 for the ratio). Provides a quality score for HRV measurements. Internally stored as
nn_over_rr
. -
QRS: Detects the ventricular depolarization pattern (heartbeat). Provides timestamps centered on the QRS complex. Updated asynchronously based on ECG data. Quality is assessed by
RR_interval_quality
. Note: QRS timing may have >10 ms error; usenn_interval
for more precision. Internally stored asqrs
. -
Respiration: Directly measures breathing movements (thoracic and abdominal) using Respiratory Inductance Plethysmography (RIP). Sampled at 128 Hz with 16-bit resolution. Estimated resolution is 8 mL. Note: A decrease in raw value corresponds to an increase in volume. Internally stored as
respiration
. -
RR Interval: Measures the time between any consecutive heartbeats (QRS complexes). Valid range is 0.265s to 4s. Updated asynchronously based on QRS detection. Values are stored in second/256 units (divide by 256 for seconds). Quality is assessed by
RR_interval_quality
. Internally stored asrr_interval
. -
RR Interval Quality: Assesses the quality of RR interval measurements. Updated asynchronously with each QRS detection. Internally stored as
rr_interval_quality
. Includes the following status flags (0 = false, 1 = true):RELIABLE_RR
: QRS good quality.NOISY_RR
: QRS detected in noisy signal.UNRELIABLE_RR
: RR interval is unreliable (outside 30-220 BPM range or significantly different from recent intervals).
-
SDNN: Measures heart rate variability using the Standard Deviation of NN intervals. Calculated over the last 5 minutes using valid NN intervals. Updated every 5 minutes (1/300 Hz). Measured in seconds. Values are stored in second/4096 units (divide by 4096 for seconds). Internally stored as
sdnn
. -
Sleep Phase: Identifies the current sleep stage (e.g., NREM, REM, WAKE) by analyzing activity, heart rate, and breathing rate. Updated asynchronously when the sleep phase changes. Internally stored as
sleep_phase
. Possible values:Value Sleep Phase 0 No Data 2 NREM (Non-REM) 5 REM (Rapid Eye Movement) 6 WAKE -
Sleep Position: Tracks body orientation during rest using accelerometer data. Updated asynchronously when position changes. Internally stored as
sleep_position
. Possible values:Value Sleep Position 0 Undefined 1 Belly (blue LED upward) 2 Back (blue LED downward) 3 Right side (face downward) 4 Left side (face upward) 5 Standing (wire down/upward) infoSleep positions assume the device is in the shirt pocket with the wire pointing up, the light facing out, and the device on the side of the body.
-
Step: Monitors the continuous count of detected steps throughout the day. Updated asynchronously based on accelerometer data. Internally stored as
step
. -
Tidal Volume: Measures the volume of air inhaled or exhaled during a normal breath in milliliters (mL/inspiration). Updated at 1 Hz. Values are stored in _mL/min _ 13.28* units (divide by 13.28 for mL/min). Represents the raw signal measurement. Internally stored as
tidal_volume
. -
Tidal Volume Adjusted: Personalized measurement of breath volume in milliliters (mL/inspiration), accounting for individual characteristics. Updated at 1 Hz. Values are stored in mL units. Internally stored as
tidal_volume_adjusted
.
Data Collection Behavior
Hexoskin devices collect data continuously while the smart garment is worn. Data is stored locally on the device first. It must then be synchronized with Hexoskin's servers using the OneSync software while the device is connected via USB to a computer.
While the OneSync software handles data synchronization, participants must
use the Hexoskin mobile app if they need to manually start specific activities
(like Rest
or Sleep
) during a recording session. Recording these specific
activity types is necessary for the calculation of certain metrics, such as HRV
and Sleep Stages (see note under
Supported Hexoskin Metrics). If these
metrics are required for your study, ensure participants understand the need to
use the mobile app to tag these activities.
Avicenna checks the Hexoskin servers every five minutes for new data and downloads it to the Avicenna platform.
Hexoskin devices generate a large amount of data. Depending on the collection duration and synchronization frequency, data availability in Avicenna might be delayed.
Adding Hexoskin As a Data Source
Refer to Accessing Data Sources for instructions on adding Hexoskin.
Monitoring Hexoskin Data
You can export and download the collected Hexoskin data using the Data Export page.
Hexoskin Data Source in Participant App
After joining a study, participants must grant Avicenna access to collect their Hexoskin data.
-
Open the Avicenna app and navigate to Settings > My Studies.
-
Select the study using Hexoskin data.
-
Tap on Data Sources.
-
Find the Hexoskin data source and tap the Grant Access button.
-
You will be redirected to the Hexoskin website to sign in and authorize Avicenna.
-
Click Allow. You will be sent back to the Avicenna app's Data Sources page. Access has now been granted.
Participants can stop sharing data at any time by returning to the Data Sources page for the study and tapping Revoke Access.