Skip to main content

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

Reference Content

For a detailed explanation on how these metrics are defined and collected, please refer to the Hexoskin API version 3.3.x.

Important Note on Certain Metrics

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 as ann.

  • 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:

    ValueDevice Position
    0Undefined
    1Blue LED upward (y-axis up)
    2Blue LED downward (-y-axis up)
    3Face downward (z-axis up)
    4Face upward (-z-axis up)
    5Wire downward (x-axis up)
    6Wire 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 as expiration.

  • 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 as heart_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 as inspiration.

  • 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 as minute_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; use nn_interval for more precision. Internally stored as qrs.

  • 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 as rr_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:

    ValueSleep Phase
    0No Data
    2NREM (Non-REM)
    5REM (Rapid Eye Movement)
    6WAKE
  • Sleep Position: Tracks body orientation during rest using accelerometer data. Updated asynchronously when position changes. Internally stored as sleep_position. Possible values:

    ValueSleep Position
    0Undefined
    1Belly (blue LED upward)
    2Back (blue LED downward)
    3Right side (face downward)
    4Left side (face upward)
    5Standing (wire down/upward)
    info

    Sleep 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.

important

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.

info

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.

  1. Open the Avicenna app and navigate to Settings > My Studies.

  2. Select the study using Hexoskin data.

  3. Tap on Data Sources.

    Study&#39;s Data Sources page in the Avicenna app

  4. Find the Hexoskin data source and tap the Grant Access button.

    Granting access to Hexoskin on the Data Sources page

  5. You will be redirected to the Hexoskin website to sign in and authorize Avicenna.

    Granting access to Hexoskin on the Hexoskin website

  6. 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.

Revoking access to Hexoskin on the Data Sources page