The goal of equil2 is to calculate urinary saturation with the EQUIL2 algorithm.
This program is intended for research use, only. The code within is translated from EQUIL2 Visual Basic code based on Werness, et al 1985 to R (see reference below). The Visual Basic code was kindly provided by Dr. John Lieske of the Mayo Clinic.
Werness PG, Brown CM, Smith LH, Finlayson B. Equil2: A Basic Computer Program for the Calculation of Urinary Saturation. Journal of Urology. 1985;134(6):1242-1244. doi:10.1016/S0022-5347(17)47703-2
You can install the development version of equil2 like so:
remotes::install_github("billdenney/equil2")This is a basic example which shows you how to calculate supersaturation:
library(equil2)
#> units added to enable unit conversion
# Phosphate and sulfate inputs are given in mmol/L so the meaning is
# unambiguous: clinical labs often report "phosphate (mg/dL)" as mass of
# inorganic phosphorus (P), but the mg_phosphate/dL unit in this package is
# mass of the PO4 ion. See vignette("original-source") for details.
equil2(
sodium_mEq_L=units::set_units(45, "mmol_sodium/L"),
potassium_mEq_L=units::set_units(55, "mmol_potassium/L"),
calcium_mg_dL=units::set_units(15, "mg_calcium/dL"),
magnesium_mg_dL=units::set_units(15, "mg_magnesium/dL"),
ammonia_mEq_L=units::set_units(10, "ug_ammonia/dL"),
chloride_mEq_L=units::set_units(75, "mmol_chloride/L"),
phosphate_mg_dL=units::set_units(32.285, "mmol_phosphate/L"),
sulfate_mg_dL=units::set_units(10, "mmol_sulfate/L"),
oxalate_mg_dL=units::set_units(10, "mg_oxalate/L"),
citrate_mg_dL=units::set_units(400, "mg_citrate/L"),
pH=5.5,
urate_mg_dL=units::set_units(50, "mg_urate/dL")
)
#> species super_saturation neg_delta_Gibbs
#> 1 Calcium Oxalate 3.096613e+00 1.4620547
#> 2 Brushite 1.259350e+00 0.2982760
#> 3 Hydroxyapatite 3.904189e+04 3.0389279
#> 4 Uric Acid 4.563641e+00 3.9273785
#> 5 Sodium Urate 1.626900e+00 0.6295155
#> 6 Ammonium Urate 1.618179e-04 -11.2910116