# Hexoskin

**URL:** <https://forum.avicennaresearch.com/t/hexoskin/1263>\
**Category:** Reference\
**Created:** [June 16, 2025, 9:19am UTC](https://forum.avicennaresearch.com/t/hexoskin/1263 "2025-06-16T09:19:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mojtaba](https://forum.avicennaresearch.com/letter_avatar_proxy/v4/letter/m/e56c9b/32.png) [@mojtaba](https://forum.avicennaresearch.com/u/mojtaba)\
**Post date:** [June 16, 2025, 9:19am UTC](https://forum.avicennaresearch.com/t/hexoskin/1263/1 "2025-06-16T09:19:11Z")

</div>

Integrating [Hexoskin’s advanced biometric shirts](https://hexoskin.com/) with Avicenna provides researchers with 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

> [!info] Reference Content  
> For a detailed explanation on how these metrics are defined and collected, please refer to the [**Hexoskin API version 3.3.x**](https://api.hexoskin.com/docs/index.html).

> [!important] 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.

- **Acceleration X:** The 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:** The 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:** The 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 normal-to-normal 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):

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

- **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 the 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):

- **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):

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

- **Sleep Position:** Tracks body orientation during rest using accelerometer data. Updated asynchronously when position changes. Internally stored as `sleep_position`. Possible values:

- **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**](https://hexoskin.com/pages/downloads) 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](#p-2890-supported-hexoskin-metrics-in-avicenna-1). 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

See [Adding Data Sources](https://forum.avicennaresearch.com/t/data-sources/1266#p-2893-adding-data-sources-to-a-study-4).

## Monitoring and Exporting Hexoskin Data

You can monitor and export Hexoskin data using either [the Data Export page](https://forum.avicennaresearch.com/t/raw-data/1241/1) or [Kibana](https://forum.avicennaresearch.com/t/kibana-basics/1289/1).

## Hexoskin Data Source in Participant App

After joining a study, participants must grant Avicenna access to collect their Hexoskin data.

1. Go to the study homepage on the Avicenna app.

2. Click the **Data Sources** button at the bottom of the page to view the study’s data sources.

3. Find the Hexoskin data source and tap the **Grant Access** button.

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

5. Click **Allow**. You will be redirected 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](https://forum.avicennaresearch.com/uploads/default/original/1X/d9530c170a802c915e91382024002b170b05e7d9.png)
