Learn R Programming

⚠️There's a newer version (4.2.2) of this package.Take me there.

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)
#> Warning in register(): Can't find generic `scale_type` in package ggplot2 to
#> register S3 method.
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')
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

493

Version

3.5.0

License

GPL-2

Maintainer

Irina Gaynanova

Last Published

October 20th, 2023

Functions in iglu (3.5.0)

cv_measures

Calculate Coefficient of Variation subtypes
grade_eugly

Percentage of GRADE score attributable to target range
gvp

Calculate Glucose Variability Percentage (GVP)
hbgi

Calculate High Blood Glucose Index (HBGI)
hist_roc

Plot histogram of Rate of Change values (ROC)
hyper_index

Calculate Hyperglycemia Index
grade_hyper

Percentage of GRADE score attributable to hyperglycemia
grade

Calculate mean GRADE score
gmi

Calculate GMI
j_index

Calculate J-index
igc

Calculate Index of Glycemic Control
iqr_glu

Calculate glucose level iqr
hypo_index

Calculate Hypoglycemia Index
lbgi

Calculate Low Blood Glucose Index (LBGI)
m_value

Calculate the M-value
iglu_shiny

Run IGLU Shiny App
optimized_iglu_functions

Optimized Calculations of Time Dependent iglu Metrics
in_range_percent

Calculate percentage in targeted value ranges
modd

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

Calculate Meal Metrics
grade_hypo

Percentage of GRADE score attributable to hypoglycemia
mad_glu

Calculate Median Absolute Deviation (MAD)
mag

Calculate the Mean Absolute Glucose (MAG)
%>%

Pipe operator
gri

Calculate Glycemia Risk Index (GRI)
plot_agp

Plot Ambulatory Glucose Profile (AGP) modal day
median_glu

Calculate median glucose level
mage_ma_single

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

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

Calculate Mean Amplitude of Glycemic Excursions
plot_glu

Plot time series and lasagna plots of glucose measurements
mean_glu

Calculate mean glucose level
plot_daily

Plot daily glucose profiles
process_data

Data Pre-Processor
plot_roc

Plot time series of glucose colored by rate of change
plot_lasagna

Lasagna plot of glucose values for multiple subjects
plot_ranges

Plot Time in Ranges as a bar plot
sd_roc

Calculate the standard deviation of the rate of change
sd_measures

Calculate SD subtypes
plot_lasagna_1subject

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

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

Calculate glucose level quantiles
sd_glu

Calculate sd glucose level
read_raw_data

Read raw data from a variety of common sensors.
range_glu

Calculate glucose level range
summary_glu

Calculate summary glucose level
above_percent

Calculate percentage of values above target thresholds
active_percent

Calculate percentage of time CGM was active
agp_metrics

Calculate metrics for the Ambulatory Glucose Profile (AGP)
all_metrics

Calculate all metrics in iglu
below_percent

Calculate percentage below targeted values
CGMS2DayByDay

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

Calculate average daily risk range (ADRR)
ea1c

Calculate eA1C
cv_glu

Calculate Coefficient of Variation (CV) of glucose levels
example_data_5_subject

Example CGM data for 5 subjects with Type II diabetes
calculate_sleep_wake

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

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

Calculate Area Under Curve AUC
example_meal

Example CGM mealtime data
epicalc_profile

Display Episode Calculation statistics for selected subject
cogi

Calculate Continuous Glucose Monitoring Index (COGI) values
conga

Continuous Overall Net Glycemic Action (CONGA)
episode_calculation

Calculates Hypo/Hyperglycemic episodes with summary statistics
example_data_1_subject

Example CGM data for one subject with Type II diabetes