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

735

Version

4.0.0

License

GPL-2

Maintainer

Irina Gaynanova

Last Published

February 23rd, 2024

Functions in iglu (4.0.0)

cogi

Calculate Continuous Glucose Monitoring Index (COGI) values
gri

Calculate Glycemia Risk Index (GRI)
grade

Calculate mean GRADE score
grade_hyper

Percentage of GRADE score attributable to hyperglycemia
grade_hypo

Percentage of GRADE score attributable to hypoglycemia
j_index

Calculate J-index
lbgi

Calculate Low Blood Glucose Index (LBGI)
grade_eugly

Percentage of GRADE score attributable to target range
in_range_percent

Calculate percentage in targeted value ranges
gvp

Calculate Glucose Variability Percentage (GVP)
iqr_glu

Calculate glucose level iqr
example_meals_hall

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

Run IGLU Shiny App
igc

Calculate Index of Glycemic Control
gmi

Calculate GMI
mage_ma_single

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

Calculate Meal Metrics
mean_glu

Calculate mean glucose level
median_glu

Calculate median glucose level
epicalc_profile

Display Episode Calculation statistics for selected subject
optimized_iglu_functions

Optimized Calculations of Time Dependent iglu Metrics
hbgi

Calculate High Blood Glucose Index (HBGI)
ea1c

Calculate eA1C
mad_glu

Calculate Median Absolute Deviation (MAD)
m_value

Calculate the M-value
mage

Calculate Mean Amplitude of Glycemic Excursions
mag

Calculate the Mean Absolute Glucose (MAG)
plot_lasagna

Lasagna plot of glucose values for multiple subjects
metrics_heatmap

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

Plot Time in Ranges as a bar plot
plot_roc

Plot time series of glucose colored by rate of change
modd

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

Calculate glucose level quantiles
process_data

Data Pre-Processor
range_glu

Calculate glucose level range
summary_glu

Calculate summary glucose level
roc

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

Plot time series and lasagna plots of glucose measurements
plot_daily

Plot daily glucose profiles
sd_glu

Calculate sd glucose level
plot_lasagna_1subject

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

Read raw data from a variety of common sensors.
hyper_index

Calculate Hyperglycemia Index
hist_roc

Plot histogram of Rate of Change values (ROC)
hypo_index

Calculate Hypoglycemia Index
plot_agp

Plot Ambulatory Glucose Profile (AGP) modal day
sd_roc

Calculate the standard deviation of the rate of change
%>%

Pipe operator
pgs

Calculate Personal Glycemic State (PGS)
sd_measures

Calculate SD subtypes
agp

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

Calculate Area Under Curve AUC
below_percent

Calculate percentage below targeted values
calculate_sleep_wake

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

Calculate average daily risk range (ADRR)
above_percent

Calculate percentage of values above target thresholds
all_metrics

Calculate all metrics in iglu
agp_metrics

Calculate metrics for the Ambulatory Glucose Profile (AGP)
CGMS2DayByDay

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

Calculate percentage of time CGM was active
example_data_hall

Example data from Hall et al. (2018)
episode_calculation

Calculates Hypo/Hyperglycemic episodes with summary statistics
cv_glu

Calculate Coefficient of Variation (CV) of glucose levels
cv_measures

Calculate Coefficient of Variation subtypes
example_data_5_subject

Example CGM data for 5 subjects with Type II diabetes
example_data_1_subject

Example CGM data for one subject with Type II diabetes
conga

Continuous Overall Net Glycemic Action (CONGA)