Learn R Programming

iglu

iglu: Interpreting data from Continuous Glucose Monitors (CGMs)

The R package ‘iglu’ provides functions for outputting relevant metrics for data collected from Continuous Glucose Monitors (CGM). For reference, see “Interpretation of continuous glucose monitoring data: glycemic variability and quality of glycemic control.” Rodbard (2009). For more information on the package, see package website.

To cite:

  • Broll S, Urbanek J, Buchanan D, Chun E, Muschelli J, Punjabi N and Gaynanova I (2021). Interpreting blood glucose data with R package iglu. PLoS One, Vol. 16, No. 4, e0248560.

  • Broll S, Buchanan D, Chun E, Muschelli J, Fernandes N, Seo J, Shih J, Urbanek J, Schwenck J, Gaynanova I (2021). iglu: Interpreting Glucose Data from Continuous Glucose Monitors. R package version 3.0.0.

iglu comes with two example datasets: example_data_1_subject and example_data_5_subject. These data are collected using Dexcom G4 CGM on subjects with Type II diabetes. Each dataset follows the structure iglu’s functions are designed around. Note that the 1 subject data is a subset of the 5 subject data. See the examples below for loading and using the data.

Installation

The R package ‘iglu’ is available from CRAN, use the commands below to install the most recent Github version.

# Plain installation
devtools::install_github("irinagain/iglu") # iglu package

# For installation with vignette
devtools::install_github("irinagain/iglu", build_vignettes = TRUE)

Example

library(iglu)
data(example_data_1_subject) # Load single subject data
## Plot data

# Use plot on dataframe with time and glucose values for time series plot
plot_glu(example_data_1_subject)

# Summary statistics and some metrics
summary_glu(example_data_1_subject)
#> # A tibble: 1 × 7
#> # Groups:   id [1]
#>   id         Min. `1st Qu.` Median  Mean `3rd Qu.`  Max.
#>   <fct>     <dbl>     <dbl>  <dbl> <dbl>     <dbl> <dbl>
#> 1 Subject 1    66        99    112  124.       143   276

in_range_percent(example_data_1_subject)
#> # A tibble: 1 × 3
#>   id        in_range_63_140 in_range_70_180
#>   <fct>               <dbl>           <dbl>
#> 1 Subject 1            73.9            91.7

above_percent(example_data_1_subject, targets = c(80,140,200,250))
#> # A tibble: 1 × 5
#>   id        above_140 above_200 above_250 above_80
#>   <fct>         <dbl>     <dbl>     <dbl>    <dbl>
#> 1 Subject 1      26.1      3.40     0.377     99.3

j_index(example_data_1_subject)
#> # A tibble: 1 × 2
#>   id        J_index
#>   <fct>       <dbl>
#> 1 Subject 1    24.6

conga(example_data_1_subject)
#> # A tibble: 1 × 2
#>   id        CONGA
#>   <fct>     <dbl>
#> 1 Subject 1  37.0

# Load multiple subject data
data(example_data_5_subject)

plot_glu(example_data_5_subject, plottype = 'lasagna', datatype = 'average')
#> Warning: Removed 5 rows containing missing values (`geom_tile()`).

below_percent(example_data_5_subject, targets = c(80,170,260))
#> # A tibble: 5 × 4
#>   id        below_170 below_260 below_80
#>   <fct>         <dbl>     <dbl>    <dbl>
#> 1 Subject 1      89.3      99.7    0.583
#> 2 Subject 2      16.8      78.4    0    
#> 3 Subject 3      72.7      95.9    0.848
#> 4 Subject 4      91.0     100      1.69 
#> 5 Subject 5      54.6      90.1    1.03

mage(example_data_5_subject)
#> Gap found in data for subject id: Subject 2, that exceeds 12 hours.
#> # A tibble: 5 × 2
#> # Rowwise: 
#>   id         MAGE
#>   <fct>     <dbl>
#> 1 Subject 1  87.2
#> 2 Subject 2 111. 
#> 3 Subject 3 115. 
#> 4 Subject 4  70.1
#> 5 Subject 5 146.

Shiny App

Shiny App can be accessed locally via

library(iglu)
iglu_shiny()

or globally at https://irinagain.shinyapps.io/shiny_iglu/. As new functionality gets added, local version will be slightly ahead of the global one.

Copy Link

Version

Install

install.packages('iglu')

Monthly Downloads

563

Version

4.2.2

License

GPL-2

Maintainer

Irina Gaynanova

Last Published

January 14th, 2025

Functions in iglu (4.2.2)

hbgi

Calculate High Blood Glucose Index (HBGI)
gri

Calculate Glycemia Risk Index (GRI)
lbgi

Calculate Low Blood Glucose Index (LBGI)
j_index

Calculate J-index
hist_roc

Plot histogram of Rate of Change values (ROC)
igc

Calculate Index of Glycemic Control
grade_hyper

Percentage of GRADE score attributable to hyperglycemia
gvp

Calculate Glucose Variability Percentage (GVP)
m_value

Calculate the M-value
mean_glu

Calculate mean glucose level
hyper_index

Calculate Hyperglycemia Index
grade

Calculate mean GRADE score
iglu_shiny

Run IGLU Shiny App
grade_eugly

Percentage of GRADE score attributable to target range
iqr_glu

Calculate glucose level iqr
hypo_index

Calculate Hypoglycemia Index
grade_hypo

Percentage of GRADE score attributable to hypoglycemia
epicalc_profile

Display Episode Calculation statistics for selected subject
gmi

Calculate GMI
mad_glu

Calculate Median Absolute Deviation (MAD)
in_range_percent

Calculate percentage in targeted value ranges
pgs

Calculate Personal Glycemic State (PGS)
median_glu

Calculate median glucose level
optimized_iglu_functions

Optimized Calculations of Time Dependent iglu Metrics
example_meals_hall

Example mealtimes data from Hall et al. (2018)
plot_meals

Plot meal metrics visualization
mage_ma_single

Calculates Mean Amplitude of Glycemic Excursions (see "mage")
meal_metrics

Calculate Meal Metrics
sd_glu

Calculate sd glucose level
mag

Calculate the Mean Absolute Glucose (MAG)
plot_ranges

Plot Time in Ranges as a bar plot
metrics_heatmap

Create a heatmap of metric values by subject based on hierarchical clustering order
read_raw_data

Read raw data from a variety of common sensors.
modd

Calculate mean difference between glucose values obtained at the same time of day (MODD)
plot_agp

Plot Ambulatory Glucose Profile (AGP) modal day
mage

Calculate Mean Amplitude of Glycemic Excursions
%>%

Pipe operator
plot_lasagna

Lasagna plot of glucose values for multiple subjects
plot_lasagna_1subject

Lasagna plot of glucose values for 1 subject aligned across times of day
plot_roc

Plot time series of glucose colored by rate of change
quantile_glu

Calculate glucose level quantiles
process_data

Data Pre-Processor
plot_daily

Plot daily glucose profiles
roc

Calculate the Rate of Change at each time point (ROC)
range_glu

Calculate glucose level range
sd_roc

Calculate the standard deviation of the rate of change
plot_glu

Plot time series and lasagna plots of glucose measurements
summary_glu

Calculate summary glucose level
sd_measures

Calculate SD subtypes
CGMS2DayByDay

Interpolate glucose value on an equally spaced grid from day to day
above_percent

Calculate percentage of values above target thresholds
all_metrics

Calculate all metrics in iglu
auc

Calculate Area Under Curve AUC
cv_glu

Calculate Coefficient of Variation (CV) of glucose levels
example_data_5_subject

Example CGM data for 5 subjects with Type II diabetes
agp

Display Ambulatory Glucose Profile (AGP) statistics for selected subject
episode_calculation

Calculates Hypo/Hyperglycemic episodes with summary statistics
agp_metrics

Calculate metrics for the Ambulatory Glucose Profile (AGP)
cv_measures

Calculate Coefficient of Variation subtypes
active_percent

Calculate percentage of time CGM was active
below_percent

Calculate percentage below targeted values
example_data_1_subject

Example CGM data for one subject with Type II diabetes
example_data_hall

Example data from Hall et al. (2018)
adrr

Calculate average daily risk range (ADRR)
calculate_sleep_wake

Calculate metrics for values inside and/or outside a specified time range.
ea1c

Calculate eA1C
cogi

Calculate Continuous Glucose Monitoring Index (COGI) values
conga

Continuous Overall Net Glycemic Action (CONGA)