Title: Insulin Sensitivity Indices Calculator
Version: 0.0.1
Maintainer: Sufyan Suleman <sufyansuleman@hotmail.com>
Description: It facilitates the calculation of 40 different insulin sensitivity indices based on fasting, oral glucose tolerance test (OGTT), lipid (adipose), and tracer (palmitate and glycerol rate) and dxa (fat mass) measurement values. It enables easy and accurate assessment of insulin sensitivity, critical for understanding and managing metabolic disorders like diabetes and obesity. Indices calculated are described in Gastaldelli (2022). <doi:10.1002/oby.23503> and Lorenzo (2010). <doi:10.1210/jc.2010-1144>.
License: MIT + file LICENSE
Encoding: UTF-8
RoxygenNote: 7.2.3
LazyData: true
Imports: dplyr, tibble, magrittr, tidyr
Suggests: knitr, rmarkdown, testthat
VignetteBuilder: knitr
Depends: R (≥ 3.5.0)
URL: https://github.com/sufyansuleman/InsuSensCalc
BugReports: https://github.com/sufyansuleman/InsuSensCalc/issues
NeedsCompilation: no
Packaged: 2024-04-03 21:03:08 UTC; rnh585
Author: Sufyan Suleman ORCID iD [aut, cre]
Repository: CRAN
Date/Publication: 2024-04-04 12:03:01 UTC

Example Dataset

Description

Names, description and units (where needed) of the variables. Name of the variables in the input data should be the same as the ones listed below for accurately calculating the indices. Otherwise it will result in Error. If a variable is missing for the category it will not calculate the any of the index for that category. This can be handeld by creating the variable column with NA vlaues If the values are missing for a variable it will set the value to NA and calculate the remaining indices and return the NA value for the missing variable.

Usage

example_data

Format

A data frame with rows (number of observations) and 17 columns (variables, can vary for every data):

age

numeric Age of the individual (years)

sex

factor Sex of the individual (1 for male, 2/0 for female)

I0

numeric Fasting insulin level (pmol/L)

G0

numeric Fasting glucose level (mmol/L)

I30

numeric Insulin level at 30 minutes (pmol/L)

G30

numeric Glucose level at 30 minutes (mmol/L)

I120

numeric Insulin level at 120 minutes (pmol/L)

G120

numeric Glucose level at 120 minutes (mmol/L)

HDL_c

numeric HDL cholesterol level (mmol/L)

FFA

numeric Free fatty acid level (mmol/L)

waist

numeric Waist circumference of the individual (cm)

weight

numeric Weight of the individual (kg)

bmi

numeric Body mass index of the individual (kg/m^2)

TG

numeric Triacylglycerides level (mmol/L)

rate_palmitate

numeric Rate of palmitate (arbitrary units)

rate_glycerol

numeric Rate of glycerol (arbitrary units)

fat_mass

numeric Fat mass of the individual (kg)

Source

Data is a simulated dataset for illustrative purposes.


Insulin Sensitivity Indices Calculator

Description

Calculates surrogate insulin sensitivity indices based on fasting, OGTT, and lipid (adipo) values values.

Usage

isi_calculator(data, category = c("fasting", "ogtt", "adipo", "tracer_dxa"))

Arguments

data

A dataframe with variables for calculating indices. The variables include measurements of insulin and glucose at fasting (0 minutes), 30 minutes, and 120 minutes after an oral glucose tolerance test, along with triglycerides, HDL cholesterol, and other necessary parameters. The variable names in the input dataframe should match those specified in the documentation (see ?example_data) to ensure accurate index calculations. If the names differ, the function will return an error. If your dataframe is missing a variable required for a specific index calculation, the function will not compute any indices for that category. To address this, you can add a column for the missing variable filled with simulated values or "NA" to allow the calculation of other indices. If a variable column exists but contains missing values, the 'isi_calculator()' function will internally set these values to "NA" and proceed to calculate the remaining indices. It will return "NA" for any index that required the missing variable.

category

Specify categories of indices to calculate through a character vector. If your data includes only fasting insulin and glucose measurements, use the "fasting" category. For calculations involving Oral Glucose Tolerance Test (OGTT) values, select the "ogtt" category; if 30-minute values are absent, the function will compute indices using only the 0 and 120-minute measurements. To incorporate lipid measurements such as triglycerides (TG), free fatty acids (FFA), and HDL cholesterol (HDL-C), choose the "adipo" category. Both the "ogtt" and "adipo" categories also require anthropometric data, including age, sex, weight, body mass index (BMI), and waist circumference. To calculate indices across all categories, either leave the argument empty or specify a list of desired categories, for example, c("fasting", "ogtt", "adipo", "tracer_dxa").

Details

It requires specific columns in the data for each category:

It also performs the following unit conversions as part of the calculations:

Additionally, for the calculation of Belfiore_inv_FFA, the function converts Free Fatty Acids (FFA) values to Area Under Curve (AUC) as part of the preprocessing.

Supported options for category are "fasting", "ogtt", "adipo", and "tracer_dxa". Specific indices calculated for each category are detailed within each category section.

fasting:

Indices based on fasting measurements.

- Fasting Insulin: Inversed to represent IS
- Raynaud Index: An IS index
- HOMA-IR_inv: Inversed to represent IS
- FIRI: Fasting Insulin Resistance Index: Inversed to represent IS
- QUICKI: Quantitative Insulin Sensitivity Check Index: IS index
- Belfiore basal:IS index
- Insulin to Glucose Ratio: Inversed to represent IS
- Insulin Sensitivity Index basal: IS index
- Bennett Index: An IS index
- HOMA-IR-inv (Revised): Revised HOMA-IR, Inversed to represent IS Index
ogtt:

Indices based on OGTT measurements.

- Insulin Sensitivity Index: IS at 120 min
- Cederholm Index: Insulin sensitivity based on the OGTT
- Gutt Index: Insulin sensitivity based on the OGTT
- Matsuda ISI AUC : Based on AUC for glucose and insulin at 0, 30, 120 minutes
- Matsuda ISI: Based on row means for glucose and insulin at 0, 30, 120 minutes
- IG_ratio_120_inv: Insulin to Glucose Ratio at 120: Inversed to represent IS
- Avignon_Si0: Avignon Index at 0 min
- Avignon_Si120: Avignon Index at 120 min
- Avignon_Sim: Avignon Index mean of the two avignon indices
- Modified_stumvoll: Modified Stumvoll Index
- Stumvoll_Demographics: Stumvoll Index with Demographics, age and bmi
- Glu_Auc_Mean: Mean Glucose AUC, not really intermediate product
- Insu_Auc_Mean: Mean Insulin AUC, not really intermediate product
- BigttSI:An IS index
- Ifc_inv: Insulin fold change, Inversed to represent IS
- HIRI_inv: Hepatic Insulin Resistance Index: Inversed to represent IS
- Belfiore_ISI_gly:IS index based on OGTT
adipo:

Indices based on adipose tissue measurements.

- Revised_QUICKI: Revised QUICK Index
- VAI_Men_inv: Visceral Adiposity Index for Men: Inversed to represent IS
- VAI_Women_inv: Visceral Adiposity Index for Women: Inversed to represent IS
- TG_HDL_C_inv: TG to HDL-C ratio: Inversed to represent IS
- TyG_inv: Triglyceride based Index: Inversed to represent IS
- LAP_Men_inv: Lipid Accumulation Product for Men: Inversed to represent IS
- LAP_Women_inv: Lipid Accumulation Product for Women: Inversed to represent IS
- McAuley_index: McAuley Index
- Adipo_inv: Adipose Insulin Resistance Index: Inversed to represent IS
- Belfiore_inv_FFA: Belfiore Index with FFA: Inversed to represent IS
tracer_dxa:

Special indices involving tracer and DXA measurements.

- LIRI_inv: Liver Insulin Resistance Index: Inversed to represent IS
- Lipo_inv: Lipolysis Index: Inversed to represent IS
- ATIRI_inv: Adipose Tissue Insulin Resistance Index: Inversed to represent IS

The calculation of most indices follows established formulas documented in the references, with units and other details conforming to the standards set forth in the literature. Although not all original references are explicitly provided, they were consulted individually for each index calculation.

References:

Value

This function returns a dataframe with Insulin Sensitivity indices calculated for the chosen categories. The output values are raw and have not undergone any normalization or transformation. For subsequent analyses, particularly statistical testing and visualization, it's advisable to normalize these values due to their varying scales.

Examples

data(example_data)
# Example usage of the isi_calculator function
# Run the isi_calculator function with the sample data
# run for each category separately
result <- isi_calculator(example_data, category = "fasting")
result <- isi_calculator(example_data, category = "ogtt")
result <- isi_calculator(example_data, category = "adipo")
result <- isi_calculator(example_data, category = "tracer_dxa")
# OR all four together if you all the required columns
result <- isi_calculator(example_data, category = c("adipo", "ogtt", "fasting", "tracer_dxa"))
# View the results
print(result)
# use ?example_data to see the sample data column names and description