Changes in version 2.7.3 (2025-09-12) Enhancements - C code for gas_pbtk model cleaned up to make solver more stable. - Argument suppress.messages added to add_chemtable and augment_table - QSPR loading function (such as load_sipes2018) no longer produce endless warnings Changes in version 2.7.2 (2025-08-29) This version addresses deSolve crashes with the dermal and 3comp2 PBTK models. We believe that by failing to set the derivative for a constant term to zero we were introducing a memory leak. Changes in version 2.7.1 (2025-08-21) This version addresses CRAN errors by making changes to the tests for the dermal PBTK model to ensure better performance across platforms. Enhancements - Monte Carlo enabled for model "sumclearancespfas" - load_honda2023 renamed to load_honda2025 to reflect publication date of Honda et al. (2025) - Additional unit conversions added to convert_units - Added additional supplementary tables from Scherer et al. (submitted) - Expanded list_models to provide description, reference, and DOI for models -- modelinfo files now can contain this information - Updated in vivo PK data fits from CvTdb. Tables chem.invivo.PK.summary.data and chem.invivo.PK.aggregate.data have more empirical parameters by dose-species-chemical and species-chemical, respectively. Fits made using invivoPKfit. Unfortunately table chem.invivo.PK.data has been removed because the CvT data are now too large for distribution through CRAN but are still available from GitHub. - Warning message added to add_chemtable to indiate when pre-existing data in chem.phys_and_invitro.data prevented new data from being added. Set overwrite=TRUE to overwrite pre-existing data. (thank you jessica-ewald) Bug fixes - ODE solver and precision for dermal model tests changed to improve stability across platforms - Corrected y-axis units in solve_model when plots=TRUE and output.units is specified Changes in version 2.7.0 (2025-07-23) This version accompanies the submission of the Meade et al. manuscript "Dermal absorption route and integration into high throughput toxicokinetics modeling (httk)" This version also accompanies the submission of the Scherer et al. manuscript "Characterizing Accuracy of Model Predictions for Concentration in High Throughput Screening Assays" This version also accompanies the submission of the Wambaugh et al. manuscript "Applying High Throughput Toxicokinetics (HTTK) to Per- and Polyfluoro Alkyl Substances (PFAS)" New Features - Added new high throughput PBTK model for dermal exposure 'solve_dermal_pbtk' - Added new vignette "Meade (submitted): High Throughput Dermal Exposure Model" - Added new chemical-specific in vitro data for fup and Clint for PFAS measured in Smeltz et al. (2023) - Added new chemical-specific in vitro data for fup and Clint for PFAS measured in Kreutz et al. (2023) - Added new chemical-specific in vitro data for Clint for PFAS measured in Crizer et al. (2024) - Added new chemical-specific in vivo Rblood2plasma data for 14 PFAS measured in Poothong et al. (2017) - Added new chemical-specific measurements of membrane affinity (logMA) for 10 PFAS measured in Droge et al. (2019) - Added new chemical-specific in silico predictions for 4136 PFAS half-life and clearance from Dawson et al. (2023) - Added new function get_2023pfasinfo to allow easy identification of newly measured PFAS chemicals - Added new model '3compartmentss2' that solves for steady-state plasma/blood concentration resulting from elimination by metabolism, renal excretion, and also exhalation since many PFAS have some volatility - Added new model 'pfas1compartment' that uses the Dawson et al. (2023) to parameterize an empirical one compartment model for PFAS chemicals -- see parameterize_pfas1comp - Added new vignette "Wambaugh (Submitted): HTTK for PFAS" - Added new in vitro distribution model Kramer 2010 implemented in function kramer_eval - Added new functions for parameterizing in vitro distribution models: parameterize_armitage, parametierize_kramer, and parameterize_IVD - Added new table "invitro.assay.params" describing ToxCast and Tox21 in vitro assays in terms needed to run in vitro distribution models - Added new vignette "Scherer (Submitted): In Vitro Distribution" - New fraction unbound in plasma (fup) data from Nicol et al. (2024) have been added for 29 chemicals Enhancements - Increased efficiency of get_cheminfo -- replaced row-wise apply with complete.cases data subsetting. This results in a substantial speed increase, especially for Monte Carlo. - Increased efficiency of convert_units -- now forms matrix of conversion factors all at once rather than building up a data frame row by row. This results in a substantial speed increase, especially for Monte Carlo. - Monte Carlo in calc_mc_tk is now implemented via data.table for efficiency. - Css functions (calc_analytic_css, calc_css, model-specific calc_analytic_css_MODEL functions) now accept explicit "species" argument and pass it explicitly to all functions that use a species argument - create_mc_samples() now accepts a named list of arguments to be passed to model-specific function for propagating uncertainty/variability (propagate_invitrouv_MODEL functions) - create_mc_samples, when firstpass == TRUE, now calls calc_hep_clearance with restrictive.clearance as specified in the parameterize.args.list - Revised 'calc_ma' to increase membrane affinities for PFAS chemicals ~400x based on regression to data from Droge et al. (2019) (if new argument 'pfas.calibration==TRUE') - Can now use 'get_physchem_param' to retrieve "Chemical.Class" (only defined for PFAS to date) - Revised documentation for model "1compartment" - Updated in vivo data from CvTdb (tables chem.invivo.PK.data, chem.invivo.PK.summary.data, and chem.invivo.PK.aggregate.data) to reflect curve fits made with invivoPKfit used in recently submitted manuscript "Collaborative Evaluation of In Silico Predictions for High Throughput Toxicokinetics" - Updated implementation of Armitage mass balance model to better reflect 2021 enhancements, changed functions armitage_estimate_sarea and armitage eval Bug fixes - Rest-of-body tissue lumping is now correct in create_mc_samples() when httkpop = FALSE. (Previously, when httkpop = FALSE, rest-of-body compartment was incorrectly doubled in volume.) - Fixed bug where create_mc_samples was using human parameters for lumping non-human species - Fixed species argument passing in parameterize_MODEL functions and solve_model as well as Monte Carlo-related functions: species is now correctly passed to all downstream functions - create_mc_samples() now varies Funbound.plasma correctly if it is specified in argument vary.params andinvitrouv = FALSE (previously, it would be held constant under these circumstances rather than being varied) - Fixed sum of squared errors calculation in calc_mc_tk - A bug has been fixed in create_mc_samples that caused arguments to invitro_mc supplied in a named list in invitro.mc.arg.list to drop their names and be passed out of order. Arguments now retain their names and are passed correctly to invitro_mc. (thanks to Tyler LaLonde and Lisa Sweeney) - Intrinsic clearance based on microsomes mistakenly labeled as hepatocyte data were removed for four chemicals: Hexobarbital (DTXSID9023122), Nicardipine (DTXSID6023363), Nilvadipine (DTXSID2046624), and 4-Hydroxydiclofenac (DTXSID40214326) - Removed data curated by TNO from source "EPA/Hamner" since we already had the primary source -- a few chemicals were reporting fup = 0.005 which is the assumed value (LOD/2) when there was a non-detect. - Fixed bug in get_physchem_param where pKa_Accept would not be returned if multiple parameters were requested at once Changes in version 2.6.1 (2025-05-01) Bug fixes - Blank values for human Clint in Woods et al. 2017 were incorrectly being recorded as 0 -- these have been removed, causing eight chemicals to no longer have Css and other predictions - ODE solver for fetal model changed to LSODE to improve stability across platforms Enhancements - Added rat and human fup data from Lynn et al. 2025 - pKa values are now predicted by ChemAxon - Refactored Henderson-Hasselbach calculations within calc_ionization to be clearer. Expanded documentation for calc_ionization. No known change to previously calculated values by that function. Introduced new argument return_charge_matrix which gives a table listing each ionization state to explain how the values in calc_ionization are derived. - When models (either OPERA or ChemAxon) predict that a chemical does not ionize, that prediction is now stored as a blank space (that is, " ") rather than an "NA". "NA" is intended to indicate that no prediction was available. This change should not impact the function of the code or any predictions, but hopefully clarifies the chemical descriptors. - Added "1comp_lifestage" and "3comp_lifestage" models. Eliminated gen_input_params and the need to generate additional files and directories; now the user supplies the reference population parameters to solve__lifestage directly. - Removed gen_input_params. - Not so much an enhancement, but CRAN check time has been decreased by removing three older vignettes associated with the Wambaugh et al., 2018, Honda et al., 2019, and Wambaugh et al., 2019 papers. The vignettes are still available on Github - export_pbtk_sbml and export_pbtk_jarnac now write to tempdir by default. Changes in version 2.6.0 (2025-04-20) This release accompanies the publication of Truong et al. (2025) manuscript "Interpretation of thyroid-relevant bioactivity data for comparison to in vivo exposures: A prioritization approach for putative chemical inhibitors of in vitro deiodinase activity" and includes a new model describing human gestation in the first trimester (model "1tri_pbtk") which links to model "fetal_pbtk" and is accessed through new function solve_full_pregnancy. This release also accompanies the submission of the new manuscript "Modeling Life-stage Variability in High-throughput Toxicokinetic Simulations" and includes a new model "pbtk_lifestage" that allows select parameters in the "pbtk" model to evolve in time. The evolution of those parameter is determined by get_input_param_timeseries using non-parametric regression on a reference population generated by gen_input_params. Bug Fixes - Corrected calculation of total clearance in calc_total_clearance to take into account systemic oral bioavailability: Cl_tot = f_bio / Css -- was using f_bio = 1 previously - At least three diffrent vesions of the argument parameterize.args.list were in use -- "parameterize.args.list" and "parameterize.arg.list" have been renamed in all functions to "parameterize.args.list" - Defined function prototypes for forcings for several models in init.c to increase stability - Added flexible tolerance to calc_css to increase stability - Arguments restrictive.clearance and/or species were being ignored by several functions -- calc_tkstats, solve_model, calc_total_clearance, calc_analytic_css, calc_hep_bioavailability, calc_hep_clearance -- this has been corrected - Species argument was being ignored in oral bioavailability functions Enhancements - Added onUnload internal function call, appears to improve stability when using multiple models with deSolve - Added class.exclude and physchem.exclude arguments to solve_[MODEL] and parameterize_[MODEL] functions - Expanded model documentation of solve_[MODEL] and parameterize_[MODEL] functions to explain physchem filter (models without inhalation/exhalation exclude chemicals more volatile than Acetone by default) and class filter (models not suited to per- and polyfluoroalkyl substances excluded by default. These filters can be turned of using arguments exclude.physchem = FALSE and exclude.class = FALSE, respectively. - Added use of Caco-2 data for estimating oral permeability to the models "gas_pbtk", and "sumclearances". - Refactored multiple functions to pass arguments using ellipsis (three dots/...) and/or parameterize.args.list so that when new arguments are added to parameterize functions these other functions do not need to be modified New Features - Added new function list_models to identify all available HTTK models. - Arguments restrictive.clearance and/or species were being ignored by several functions -- calc_tkstats, solve_model, calc_total_clearance, calc_analytic_css, calc_hep_bioavailability, calc_hep_clearance -- this has been corrected - Added argument chem_include to load_sipes2017, load_pradeep2020, load_dawson2021, load_honda2023 to speed up loading of in silico predicted values by only loading chemicals specified by argument Changes in version 2.5.0 (2025-01-14) This release accompanies the submission of the Wambaugh et al. (2025) manuscript "A Simple Physiologically-Based Toxicokinetic Model for Multi-Route In Vitro-In Vivo Extrapolation" and includes new models incorporating inhalation/exhalation ("sumclearances" and "3compartment2"). Bug Fixes - Corrected units in Armitage model documentation (does not impact performance) - Corrected calculation in calc_analytic_css_1comp to reflect that Vdist is the effective plasma (not blood) volume (thanks Shenghong Wang) - Updated check_model argument logic to include "force.human.clint.fup" - calc_css Now passing arguments "well.stirred.correction" and "restrictive.clearance" to the model parameterization function, so calc_css should now respect user specifications for those options, rather than previous behavior of always calculating with defaults well-stirred and restrictive = TRUE - solve_model: Pass restrictive clearance argument to model parameterization function - parameterize_steadystate: pass minimum.Funbound.plasma to get_fup - parameterize_1comp: pass "minimum.Funbound.plasma" argument to calc_vdist - calc_total_clearance: arguments "well.stirred.correction" and "adjusted.Funbound.plasma" are no longer explicit arguments for the function but are still able to be used as part of the '...' arguments - solve_gas_pbtk: the "restrictive.clearance" argument default was changed from TRUE to FALSE - Documentation updates to clarify and/or correct descriptions to better explicate 'httk' functionality and methods. - Clarified examples for calc_vdist, parameterize_schmitt, and predict_partitioning_schmitt to correctly show how to predict volume of distribution from a list of parameters Enhancements - New model functions for TK models with inhalation/exhalation: parameterize_sumclearances, parameterize_3comp2, solve_3comp2 - Separate forcing functions are now declared in init.c for models (such as "gas_pbtk") that use the deSolve forcing functionality. - Revised init.c file to try to make it clearer that the forcing function handler needs to be defined if forcings are used. - Revised examples with respect to adding species - modelinfo_1comp: Adding a Henry's Law Constant threshold to 1-comp model - parameterize_1comp: Add calls to check_model for models "1compartment" and "3compartmentss", since we use parameterize_steadystate to parameterize "1compartment". - Added argument class.exclude to multiple functions to allow class-based exclusion (for example, no PFAS) to be turned off (class.exculde = FALSE) -- defaults to TRUE - To be consistent with Linakis et al. (2020) the hepatic metabolism for solve_gas_pbtk is now non-restrictive by default, but argument restrictive.clearance=TRUE makes the model behave similarly to the default pbtk model. Changes in version 2.4.0 (2024-09-05) This release accompanies the submission of the Davidson-Fritz (2025) manuscript "Enabling Transparent Toxicokinetic Modeling for Public Health Risk Assessment" and includes changes intended to better facilitate development of new HTTK models through improved model clarity. In addition, we have incorporated comments received on the Honda et al. (2025) manuscript "Impact of Gut Permeability on Estimation of Oral Bioavailability for Chemicals in Commerce and the Environment" provided by reviewers at ALTEX. Bug Fixes - Cleaned up functions for model "3compartment" - Corrected error where non-restrictive clearance option was not working for model pbtk - Set restrictive.clearance=TRUE by defailt in calc_hep_clearance when model = "unscaled" - Corrected compartment names for model "gas_pbk" -- "Calv", "Cendexh", and "Cmixexh" were being returned in ppmv units, while "Calvppmv", "Cendexhppmv", and "Cmixexhppmv" were in uM - Calculation of Fabs corrected for non-human species to follow Yu and Amidon (1999) using small intestine mean residence time and radius. (Thank you ALTEX reviewers) - Intestinal flow rate correction to the Qgut model now scales with body weight (rodent Fgut was being predicted way too low) - Corrected units of Peff in calculation of Fabs by calc_fabs.oral -- calculations now indicate that more chemicals are poorly absorbed. - Revised calc_css to handle models with no specified analytic solution - Revised ionization code in armitage_eval so that pka_donor and pka_accept values now correctly used (thank you Meredith Scherer) - Corrected bug in solve_model when only specific times requesed and plots=TRUE (thank you Kimberly Troung) - Corrected bug with get_chem_id when using add_chemtable without DTXSIDs (thank you Marc Beal and Miyuki Breen) - Corrected bug with create_mc_samples where arguments were not getting passed to 'invitro_mc' (thank you Hsing-Chieh Lin and Weihsueh Chiu) - Corrected bug in solve_model where tsteps was ignored if times were specified Enhancements - A physiology data table from 'httkpop_generate' can now be passed to calc_mc_css and calc_mc_tk (and calc_mc_css via ...) so that a consistent population can be used across Monte Carlo runs. See argument httkpop.dt. - Physico-chemical properties are now retrieved from the CompTox Chemicals Dashboard programmatically using R package ctxR (Thank you Paul Kruse) - calc_fabs.oral now calculates oral uptake rate kgutabs using Caco-2 permeability, according to method of Lennernas (1997) (Thank you ALTEX reviewers) - Revised and changed name of get_fabsgut to get_fbio and modified function to use calc_fbio.oral rather than call oral bioavailability subfunctions directly - Replaced conversion of human effective gut permeability to rat using Wahajudin et al. (2011) regression (Thank you ALTEX reviewers) - Loading message displaying version now appears when package is loaded (thank you EPA NAMs class) - Cleaned up code for various ODE models to make them more consistent and better annotated (added more comments) - Reordered variables in modelinfo files for consistency so that diff can be used more easily to compare two models - Modified calc_kair to only allow neutral chemical fraction to partition into air (thank you Jon Arnot) - Updated help files describing models - Default ODE solver tolerances increased to just below significant figures reported by HTTK (we report 4 sig figs, now require the solver to only converge to 5) - solve_[MODEL] functions now exclusively pass arguments to deSolve through "..." - New modelinfo file variable default.solver.method can be set -- specifies the default ODE solver approach for deSolve if "lsoda" is not desired - Revised calc_css to better calculate the day on which steady-state is reached - Added internal function check_model to provide more informative error messages when key model parameters are missing - Updated scoping on several functions so that data.tables are handled locally within the functions and not passed by reference. - Precision of time points added by tsteps argument in solve_model now limited to ten times higher than small.time - Additional time points now reported in solve_model immediately after dose events to improve plotting Changes in version 2.3.1 (2024-03-26) This patch addresses a number of bugs. Bug Fixes - Argument keepit100 was being improperly ignored by get_fabsgut - Fixed issue where create_mc_samples could not handle argument parameters being a list (as in, parameters=parameterize_steadystate(chem.name="bisphenola")) - Error messages for calc_css now explain that function is only applicable to dynamical (time-evolving) models and handles errors with other models (such as 3compartmentss) more gracefully - Changed Rblood2plasma to Rfblood2plasma for fetal plasma in model fetal_pbtk (Thank you to Kimberly Troung) - Liquid densities previous referred to as ppmv for convert_units were actually ppmw. Cannot calculate ppmv without chemical-specific liquid density, which we do not know. - Added model descriptor compartment.state to indicate which compartments are liquid and which are gaseous - 'calc_analytic_css_3compss' was reporting blood concentrations when asked for plasma Enhancements - Changed armitage_eval to allow chemical specification by usual arguments chem.name, chem.cas, and DTXSID. Preserved casrn.vector for backward compatibility. - Changed armitage_eval to allow multiple instances of chemicals (no longer using CASRN as row names) -- thank you Katie Paul Friedman for suggestion - Added Katie Paul Friedman (USEPA) as contributor for long history of suggesting refinements and putting up with bugs - Function solve_model now gives warnings when ignoring elements of dosing for a given model and route (acceptable dosing.params are now specified by the modelinfo_[MODEL].R file) Changes in version 2.3.0 (2023-12-08) This version accompanies the submission of manuscript Honda et al. "Impact of Gut Permeability on Estimation of Oral Bioavailability for Chemicals in Commerce and the Environment". Find the analysis scripts on GitHub Bug Fixes - Added parameter plasma.vol to one compartment model so that Monte Carlo works for non-human species - Added default units for Aexh and Ainh state variables in gas_pbtk model so that calc_css works for accumulative chemicals - Corrected the Linakis et al. (2020) vignette to reflect that all CvTdb data used there already are in uM - Corrected ppbv unit conversions in convert_units - Precision of time output in solve_model is no longer restricted to four significant figures - Fixed bug with Monte Carlo functions (for example, calc_mc_oral_equiv) wherein you could not specify the argument parameters to be a table created by create_mc_samples (thanks Jayme Coyle and Tyler Lalonde) - Revised convert_units to handle multiple molecular weights -- this enables convert_mc_oral_equivalent to take a table of parameters for Monte Carlo - Updated the checks and reported error messages in get_clint and get_invtroPK_param to be more informative - Corrected calculation of mean blood:plasma partition coefficient when measured RBlood2plasma is available - Clint and fup are now adjusted for in vitro binding when invitrouv=FALSE (thanks cm16120) New Features - Added in vitro measured Caco-2 membrane permeability data for 310 chemicals allowing characterization of oral bioavailability - Added new function load_honda2023 to load QSPR (quantitative structure-property relationship model) predictions for Caco-2 membrane permeability for ~10,000 chemicals -- QSPR is optimized to detect low permeability chemicals and therefore predicts only three values (low/medium/high permeability) - Added new functions calc_fbio.oral, calc_fabs.oral, and calc_fgut.oral for calculating systemic bioavailability as $F_{bio} = F_{abs} \times F_{gut} \times F_{hep}$ where first-pass hepatic metabolism was already available from calc_hep_bioavailability. - Changed the name of the variable describing fraction absorbed from the gut prior to first-pass hepatic metabolism to Fabsgut to reflect that Fabs and Fgut are now modeled separately (that is, Fabsgut = Fabs * Fgut). - Integrated Fabs and Fgut into oral exposure for all TK models and integrated into population variability and uncertainty functions within invitro_uv - Added new function benchmark_httk to compare current function of the package against historical performance (stored in data.frame httk.performance) - We now skip over the first five minutes when calculating Cmax in calc_tkstats to allow PBTK model to distribute iv doses Enhancements - Added QSPR predictions for fup and Clint for several thousand chemicals using the Dawson et al. (2020) models -- accessible from load_dawson2021 (thank you Alex Fisher and Mike Tornero!) - Predicted phys-chem properties for most chemicals using OPERA v2.9 (updated armitage_eval to properly convert water solubility from OPERA units) - Package now requires ggplot2 -- will gradually shift all plotting from base R - Returned and updated the Pearce et al. (2017) vignette on Evaluation of Tissue Partitioning - Revised function convert_units, expanding the variety of unit conversions available -- it is critical to distinguish between state of matter (liquid vs. gas) - Model 1compartment allows volatile chemicals again since clearance is amorphous for that model (likely underestimated without exhalation) - Many manuscript references listed in function documentation were converted to a BibTex format from manual insertion of the citations. (thanks Lily Whipple) - Updated get_physchem_param to be case-insensitive - New Clint and fup data curated from literature by ICF from Black et al. (2021), Williamson et al. (2020), Zanelli et al. (2012), Yamagata et al. (2017), and Zanelli et al. (2019) (thank you Noelle Sinski and Colin Guider) Changes in version 2.2.2 (2023-02-20) Bug Fixes - Corrected analytic steady-state functions for PBTK, 3-compartment, and 3-compartment steady-state models to return plasma, not blood concentrations (via blood:plasma ratio) - Removed inappropriate second adjustment for binding in intrinsic hepatic clearance assay from cal_hep_clearance -- Kilford (2008) adjustment now only occurs in parameterization functions* Added new function apply_clint_adjustment to standardize implementation of adjustment (thanks Todor Antonijevic) - Fixed major bug in calc_ionization that caused error when argument pH was a vector -- impacts Monte Carlo for ionized compounds - Corrected equation tracking amount inhaled in gas PBTK model (thanks Cecilia Tan) - Fixed bugs that prevented using Monte Carlo with phys-chem parameters - Fixed error for species with missing in vitro data (thanks Lu En-Hsuan) - Fixed bug where solve_model returned other than requested times when argument times was specified (thanks Kimberly Truong) New Features - Added updated vignette from Pearce et al. (2017): v79i04.R - Added new vignette on "Introduction to IVIVE" - Added functions calc_fup_correction and apply_fup_adjustment to consolidate and make uniform application of the Pearce et al. (2017) lipid binding adjustment to in vitro measured fup - We now export function calc_dow for the distribution coefficient - New function calc_ma separates membrane affinity calculation from parameterize_schmitt - New function calc_kair separates calculation of blood:air, water:air, and mucus:air partition coefficients from parameterize_gas_pbtk Enhancements - Added cutoff of logKow/logDow no greater than 6 for calc_fup_correction and calc_hep_fu based on the idea that the in vitro assays are not long enough to reach concentration ratios greater than 1,000,000 to 1 - Updated calc_analytic_css_pbtk to reflect Breen et al. (2022) modification to glomerular filtration in the kidney - get_cheminfo now lists required parameters when chemicals are excluded (thanks Ben Savage) - Returned daily.dose argument to calc_mc_css (still defaults to 1 mg/kg/day) - Simplified arguments needed for calc_mc_css and calc_mc_tk since now internally using do.call wherever possible to pass arguments - Revised restrictive.clearance argument for function solve_model - Added inline code comments to predict_partitioning_schmitt identifying corresponding equations in Schmitt (2008) - Added option class.exclude to get_cheminfo -- defaults to TRUE, but if FALSE then chemical classes are not excluded based on specified model - Updated various function documentation Changes in version 2.2.1 (2022-09-24) This minor update removes UTF-8 characters from the package and changes the calculation of kUrt on line 292 of model_gas_pbtk.c to reduce vulnerability to machine precision errors. Changes in version 2.2.0 (2022-09-08) This version accompanies the submission of the Breen et al. (2022) manuscript "Simulating Toxicokinetic Variability to Identify Susceptible and Highly Exposed Populations" Enhancements - HTTK-Pop population simulator: - Replaced HTTK-Pop data from NHANES cycles 2007-2012 with data from most recent 3 NHANES cycles (2013-2018) - Reduced size of data file httkpop.RData. NHANES data now stored as object mecdt of class data.table, rather than as object nhanes_mec_svy of class survey.design2. Also, no longer storing pre-calculated spline fits for serum creatinine and hematocrit vs. age, or pre-calculated age distributions (used by HTTK-Pop in virtual-individuals mode); these are now calculated "on the fly". - In CKD-EPI equation used to estimate GFR for simulated adults based on serum creatinine, age, sex, and race (black/non-black): set race factor to 1 by default (that is, treat all simulated adults as "non-black" for purposes of GFR estimation), to reflect recent changes in clinical practice. (Control this behavior with httkpop_generate() argument ckd_epi_race_factor) - Add residual variability to GFR estimated using CKD-EPI equation, by default. (Control whether to add residual variability using httkpop_generate() argument gfr_resid_var) - Phys-chem properties: - Replaced pKa values from Strope et al. (2018) with OPERA (v2.7) predictions (https://github.com/kmansouri/OPERA) - This may slightly change all predictions chemicals that are ionized in tissue. - PBTK model equations: - Revised renal clearance to be GFR x [Unbound concentration in arterial plasma] (previously it was GFR x [Unbound conc in kidney plasma]) - Miscellaneous: - Added suggestion message to set default.to.human=TRUE when rat fup is 0 (Thanks Jim Sluka) - Added wrapper functions (get_wetmore...) for backward compatibility (Thanks Jim Sluka) - Updated invitro_mc to remove inconsistencies and correct handling of fup where median is zero but upper 95th is non-zero - Added internal function remd0non0u95 to draw random numbers such that the median is zero and the upper 97.5th quantile is non-zero, taking limit of detection into account - Revised and expanded documentation for calc_mc_css and calc_mc_oral_equiv - Added logical arguments to invitro_mc to directly allow user to turn uncertainty and variability off (previously this was done by setting CV to NULL) - If Monte Carlo for the fup measurement (that is, uncertainty) is turned off user may choose to provide columns for unadjusted.Funbound.plasma or fup.mean from their own methods - Moved Kilford et al. (2008) correction for fraction unbound in hepatocyte assay from calc_hep_clearance to the parameterize_X functions and invitro_mc -- can now be toggled with argument adjusted.Clint - New vignette "Introduction to HTTK" added that includes material from Breen et al. (2021) Bug Fixes - uM units on calc_mc_css were incorrectly calculated in v2.1.0 (only), mg/L units unaffected, but this will have impacted equivalent doses calculated with calc_mc_oralequiv (Thank you Marc Beal!) - User provided DTXSID chemical identifiers were not passed appropriately in the calc_half_life and prohibited the ability to obtain steady state parameters. - Error fixed in create_mc_samples related to default.to.human argument not being passed to parameterize_schmitt Changes in version 2.1.0 (2022-03-26) This version accompanies the submission of the Kapraun et al. (2022) manuscript "Evaluation of a Rapid, Generic Human Gestational Dose Model" New Features - New HT-PBTK model added as described by Kapraun et al. (submitted) including functions solve_fetal_pbtk and parameterize_fetal_pbtk - QSAR predicted chemical-specific plasma protein unbound plasma fraction (fup) and intrinsic hepatic clearance (Clint) values data from Dawson et al. (2021) is now included as Dawson2021 and can be added with the new function: load_dawson2021 - QSAR predicted chemical-specific plasma protein unbound plasma fraction (fup) and intrinsic hepatic clearance values (Clint) data from Pradeep et al. (2020) is now included as Pradeep2020 and can be added with the new function: load_pradeep2020 - Added function calc_halflife (thank you Imran Shah) Enhancements - Updated predict_partitioning_schmitt removing the hard coded predicted fup regression values from Pearce et al. (2017) and created stand-alone data matrix pearce2017regression read in by the function. - Internal reusable function convert_units added to ensure consistency in unit conversions across functions - Units corrected for gas_pbtk model to more naturally handle ppmv (parts per million by volume) and uM - Reworked code for predict_partitioning_schmitt -- now we read list of tissues needed for a model from modelinfo_X.R variable alltissues - Further revised documentation to Armitage et al. (2014) functions (thank you Madison Feshuk) - Expanded documentation for function get_cheminfo and table chem.phys_and_invitro.data (thank you Lynne Haber and Mark Bradley) - Expanded example for add_chemtable to address ionization (thank you Johann Fribl) - Added Clint data from Dawson (2021) training set (CHEMBL) - Revised get_cheminfo to incorporate a chemical class filter to remove "PFAS" compounds for all models, except 3compartmentss, based on Wambaugh et al.(2015). Bug Fixes - Corrected swapped area_bottom values in table well_param for the Armitage model. (thank you Todor Antonijevic) - Contribution from Todor Antonijevic: - this.conc_ser_alb, this.conc_ser_lip, and this.Vdom added to the list of arguments. - the volume of headspace calculated as in Armitage et al. (2014). - the volume of medium calculated as in Armitage et al. (2014). - f_ratio calculated as in Armitage et al. (2014) - kow added in the denominator of cwat, that is kowP_domf_oc * Vdom - Corrected major bug introduced in 2.0.0 (vectorization of calc_ionization) that caused pKa`s to be ignored in many cases (thank you Wu Yaoxing) - Corrected monkey cardiac output (thank you Peter Egeghy) - Corrected rabbit plasma volume and total body water (thank you Jo Nyffeler) Changes in version 2.0.4 (2021-05-10) Enhancements - Sarah Davidson is new lead HTTK software engineer (thank you Mark Sfeir!) - Added Xiaoqing Chang and Shannon Bell as contributors thanks to substantial efforts improving the package - Changed DESCRIPTION to indicate LazyDataCompression is xz - Revised and expanded documentation for functions related to Armitage et al. 2014 in vitro distribution model -- armitage_eval() and armitage_estimate_sarea() - Revised documentation to several functions missing value description (thank you Julia Haider and Gregor Seyer) - Revised examples where arguments had changed (thank you Julia Haider) - Revised and expanded documentation for functions related to Armitage et al. 2014 in vitro distribution model -- armitage_eval() and armitage_estimate_sarea() - Revised get_cheminfo behavior to change chemical hepatic clearance values where p-value is not consistent with decrease (p-value > clint.pvalue.threshold, default 0.05) to zero. - Revised get_cheminfo behavior to remove fraction unbound in plasma values if credible interval spans from < 0.1 to > 0.9 (turn off with fup.ci.cutoff=FALSE). - Revised get_cheminfo to include median.only argument allowing confidence intervals to be removed for chemical intrinsic hepatic clearance (Clint) values and fraction unbound in plasma (fup) values where they exist (turn on with median.only=TRUE). - Revised get_cheminfo to filter volatile compounds using Henry`s law constant for all models, excluding the "gas_pbtk" model. Bug Fixes - Fixed problems with Clint values reported from Wood et al. 2017, fraction unbound in hepatocyte assay adjustment was being applied twice (thank you Xiaoqing Chang) - Fixed problems with clearance from source "Ito/Riley": "not determined" was mistakenly being interpreted as "0" rather than not measured (thank you Xiaoqing Chang) Changes in version 2.0.3 (2020-09-25) Enhancements - Updated literature chemical-specific human and rat in vitro data: - Revised human and rat VOC chemical numbers to match Linakis et al. (2020) - Replaced "Obach" human pharmaceutical data from Obach et al. (2008) with data from Lombardo et al. (2018) - Added new human data from EU JRC (Paini et al., 2020) - Steady-state model 3compartmentss) now works for 1016 chemicals in human and 212 in rat - Renamed calc_stats to calc_tkstats -- calc_stats remains temporarily but calls calc_tkstats - Added warnings to deprecated function names calc_stats and calc_hepatocyte_clearance - Revised how default.to.human works, so that get_cheminfo and parameterize_schmitt now handle odd cases (like species is zero but human is not) better - Argument info for get_cheminfo is now case insensitive - add_chemtable (really internal function augment.table) changed to enforce significant figures (default 4) - OPERA phys-chem properties provided by CompTox Chemicals Dashboard have been slightly revised - Updated documentation to well parameters for Armitage et al. (2014) model (thank you Katie Paul-Friedman and Greg Honda) - added allow.na argument to add_chemtable so that values can be deleted (thanks Nisha Sipes) Bug Fixes - Fixed logic statement in solve_model to eliminate warning - Problem with create_mc_samples not setting parameter.names variable when parameters are passed to it was fixed by Tom Moxon -- thank you! - add_chemtable changed so that pValue and pValue.Reference set to NA when Clint is changed (thanks Nisha Sipes) - Output for calc_tkstats corrected to display Rblood2plasma - Minor fix with argument suppress.messages in parameterize_pbtk Changes in version 2.0.2 (2020-07-19) Enhancements - Updated default dosing scheme so that a single-time, initial dose comes into effect if no other dosing information is specified, and any dosing info that is specified using whatever dosing arguments overrides the default. Combinations of dosing arguments can still be specified. - Adjusted 3compartmentss model to effectively make use of any passed chemical identifier information, especially as it is needed in using get_physchem_param to look up any missing parameter needed in predicting tissue:plasma partition coefficients using predict_partitioning_schmitt. Bug Fixes - Fixed errors in the different models` steady state solver functions to support parameter input of key object types, especially lists and compound data.tables/data.frames. (thank you, Nisha Sipes) Changes in version 2.0.1 (2020-03-02) New Features - New function set_httk_precision is now used throughout code to enforce a standard set of significant figures (4) and precision (nothing less than 1e-9). Enhancements - Added calc_hepatic_clearance wrapper function for calc_hep_clearance to allow backwards compatibility - Revised get_chemid to not crash in certain cases (thank you, Shannon Bell) - Revised Linakis et al. (submitted) vignette Bug Fixes - Fixed output of calc_mc_oral_equivalent (was sometimes returning all samples unasked, thank you Dan Dawson) Changes in version 2.0.0 (2020-02-17) This version is consistent with the Linakis et al. (2020) manuscript "Development and Evaluation of a High Throughput Inhalation Model for Organic Chemicals" New Features - New generic inhalation PBPK model "gas_pbtk" - New chemical specific parameters for volatile chemicals have been added: - 43 in human - 41 in rat Enhancements - Significantly rewrote underlying code to allow more easy integration of new models. (goodbye spaghetti code!) - Rewritten functions include: - calc_analytic_css - calc_mc_css - convert_httkpop (renamed from convert_httk) - solve_* model functions - Renamed a few httk-pop functions for clarity: - httkpop_biotophys_default replaces httkpop_bio - convert_httkpop replaces convert_httk - New functions introduced: - solve_model (mostly used by solve_* model functions) - calc_mc_tk (performs Monte Carlo simulation using a solve_* function) - Models must be much more thoroughly described now, with all relevant information placed in modelinfo_* files in the /R directory. - New model-specific functions introduced: - analytic_css_*: Model-specific analytic steady-state solution - convert_httkpop_*: Model-specific functions for converting HTTK-pop biometrics to model parameters - Beta testing and bug reports provided by Xiaoqing Chang. - EPAs DSSTox Chemical Structure IDs (DTXSIDs, see https://comptox.epa.gov/dashboard) now work as chemical identifiers in addition to name and CAS. - Results now truncated to appropriate significant figures (4) and precision (1e-12). - New physiological parameters have been added for monkeys - To decrease package size the load image option of load_sipes2017 was eliminated - Added vignette for Figure 6 from Frank, et al. (2018) "Defining toxicological tipping points in neuronal network development." Changes in version 1.10.1 (2019-09-10) Enhancements - Changed all file name starting letters to lowercase. Bug Fixes - Many bug fixes (thank you David Trudel). Changes in version 1.10.0 (2019-07-11) This version is consistent with the Wambaugh et al. (2019) manuscript "Assessing Toxicokinetic Uncertainty and Variability in Risk Prioritization". Major enhancements were made to allow propagation of measurement-specific uncertainty and population variability into IVIVE predictions. New Features - New human experimental measurements of fup and Clint are reported for 418 and 467 chemicals, respectively. - Data on both fup and Clint are jointly available for 389 of those chemicals. - Clint and fup values can now be either numeric values (as before) or distributions characterized by as "MEDIAN,LOWER95TH,UPPER95TH,PVALUE" for Clint and "MEDIAN,LOWER95TH,UPPER95TH" for fup. The code has been substantially revised to accommodate this. Enhancements - Added a minimum.Funbound.plasma argument since some of the Bayesian estimates are very low and at some point, the values seem implausible. A value of 0.0001 was selected since it half the lowest reported measured value. Setting minimum.Funbound.plasma=0 removes this restriction. - Monte Carlo coefficient of variation for Clint and fup has been divided into separate values for uncertainty (from measurement) and variability (population/genetic). Default values for coefficients of variation are fup.meas.cv=0.4, clint.meas.cv=0.3, fup.pop.cv=0.3, clint.pop.cv=0.3, (from Wambaugh et al, submitted). Note that most of the new fup measurements have a lower CV than 0.3. - All documentation converted to roxygen2 format. - Vignette names have been updated to make the related publication clear - All references to fub (previously "fraction unbound" but confusing with "fraction unbound in blood") have been converted to fup (the intended "fraction unbound in plasma") where appropriate. - Rewrote calc_analytic_css to handle all models in the same manner. - Changed argument values "mg" and "mol" for output.units in calc_mc_oral_equivalent to "mgpkgpday" and "umolpkgpday". (idea from Katie Paul-Friedman) - Changed httk-pop argument fup.censor to fup.censored.dist. - Armitage et al. (2014) model functions now work with input of vectors (to allow data.table compatibility) or input of data.table - Added the physico-chemical parameters needed to run Armitage et al. model - Updated honda.ivive argument functionality, reduced to four options as in Honda et al. (2019) Figure 8 panels a-d, changed "plasma.binding" to "bioactive.free.invivo", and exported function to allow user to call help file - Added concentration as an option set by honda.ivive - Added concentration = "tissue" as an option to calc_css functions - Added bioactive.free.invivo as an option to calc_analytic_css functions, and calc_mc... functions - Function get_physchem_param: exported and now works with vectors of CAS and/or parameters Bug Fixes - Corrected error where non-human species were using the incorrect p-value for Clint when default.to.human=TRUE (human p-value is now used). (thank you Jason Phillips and Shyam Patel for bug report). - Shyam Patel (Sciome) identified an error in how flow means were scaled by age in httk-pop Monte Carlo sampler. - Fixed calc_mc_css warnings Changes in version 1.9.2 (2019-04-25) Bug Fixes - Updated tests to reflect correct model predictions. - Fixed errors that was causing the 3compartmentss and 1compartment models to not work with Monte Carlo. (thank you, Jo Nyffeler, for bug report). Changes in version 1.9.1 (2019-04-17) Bug Fixes - Fixed significant errors in calc_analytic_css that were causing Css to be over-estimated roughly 10x, therefore reducing the oral equivalent dose 10x (thank you Nisha Sipes for bug report). Changes in version 1.9 (2019-02-04) This version is consistent with the submitted version of the Honda et al. (2019) manuscript "Using the Concordance of In Vitro and In Vivo Data to Evaluate Extrapolation Assumptions" New Features - New rat-specific in vitro TK data provided for 65 chemicals (Honda et al.) - New functions for calculating in vitro disposition according to the Armitage et al. (2014) model (thank you James Armitage): - armitage_eval - armitage_estimate_sarea Enhancements - Mark Sfeir is new lead HTTK software engineer (thank you Robert Pearce!) - Moved code base to Bitbucket internally (thank you Sean Watford and Jeremy Dunne) - Added arguments to IVIVE functions (for example, calc_mc_css) to use sets of assumptions identified by Honda et al. (for example, IVIVE="Honda1") (thank you Katie Paul-Friedman) - Changed all model parameter sets to include physico-chemical properties to better facilitate Monte Carlo analysis - Updated load_sipes2017 to be much faster by loading an image by default - Updated help files for Sipes2017 and load_sipes2017. - get_wetmore_X functions changed to get_lit_X - httkpop_bio exported to user functions (function name since changed to httkpop_biotophys_default) - For time point after first dose: bug now corrected when not starting at time 0 (thank you Xiaoqing Chang) - Added figures to help files of solve_[MODEL] functions - Added hematocrit argument to calc_rblood2plasma - Changed amounts in model 1compartment to not be scaled by body weight, added BW to parameters for that model thank you Tom Moxon) - Converted all phys-chem properties except pKa to values predicted by OPERA (Mansouri et al., 2018) -- see https://github.com/NIEHS/OPERA - Added missing logP and MW for some chemicals using predictions from OPERA - Renamed and added vignettes Bug Fixes - Corrected mistake in get_cheminfo help file: exclude.fub.zero defaults to FALSE for model 3compartmentss and TRUE for others - Corrected (thank you Jason Phillips), updated, and added pKa values from Strope et al. (2018) - Corrected calc_mc_css bug: species now passed to function monte_carlo Changes in version 1.8 (2018-01-23) This version is consistent with the published version of the Pearce et al. (2017) manuscript "Evaluation and calibration of high-throughput predictions of chemical distribution to tissues". This version contains calibrations for tissue:plasma partition coefficient calibration predictions. New Features - Added arguments to multiple functions for whether or not to use new calibration regressions (regression) and adjusted fup (adjusted.Funbound.plasma). - Hepatic clearance and plasma binding predictions for ~8000 chemicals from Simulations Plus ADMET Predictor used in Sipes et al. (2017) is now included as Sipes2017 and can be added with the new function: load_sipes2017(). - New data has been added from an IVIVE evaluation of toxicokinetics Wambaugh et al. 2018 - New toxicokinetic concentration vs. time data were added to chem.invivo.PK.data (full time course) and chem.invivo.PK.summary.data (TK statistics such as Cmax and AUC on a per treatment basis). - A new table is included: chem.invivo.PK.aggregate data (TK statistics such as volume of distribution and elimination rate on a per chemical basis) - kgutabs default changed to 2.18. Enhancements - fup values from Wetmore et al. 2012 and 2013 that were previously rounded to 2 decimal places are now rounded to 3, resulting in additional compounds with measurable *** fup *** that were otherwise assumed to be below the limit of detection. - pKa data is now readable when values are separated by a semicolon rather than a comma. These values were previously misread as neutral. - Partition coefficients can now be predicted without calculating all of them, using the tissues argument. - calc_mc_css runs faster when not using httk-pop and calculating Rblood2plasma, now only calculated once. - chem.lists is updated, and is.pharma has been added as a function. - calc_analytic_css does not recalculate all partition coefficients when specifying a tissue. - logP values from EPISuite or valued NA have been replaced with predictions from OPERA where available. - First-pass hepatic metabolism has been added in the form of the parameter hepatic.bioavailability to the models 1compartment (parameterize_1comp) and 3compartmentss (parameterize_steadystate). Oral doses for these models are now multiplied by hepatic.bioavailability and Fgutabs before entering systemic circulation. - kinhabs and kdermabs, both of which were unused in the models, are removed. - modelPBTK.c, the source file for the model "pbtk", now has updated variable names, and corresponding changes are made in solve_pbtk. - The time step immediately after addition of dose is added to better capture peak concentration for iv dosing. Bug Fixes - Corrected calc_mc_css bug: daily.dose now working as an argument (previously only running as 1). Changes in version 1.7 (2017-07-15) This version is consistent with the Journal of Statistical Software publication of the Pearce et al. (2017) manuscript "httk: R Package for High-Throughput Toxicokinetics". Bug Fixes - Corrected intrinsic clearances for (about 10) compounds from Brown et al. (2007), - Corrected output message from calc_mc_css - Corrected fup used for predicting partitioning into interstitial protein (negligible difference in predictions) - Corrected bug in calculating Rblood2plasma in calc_mc_css, and added faster method for calculating Rblood2plasma for 3compartmentss. Changes in version 1.6 (2017-06-08) This version includes data and modifications as reported in the recently submitted Pearce et al. (2017) manuscript "Evaluation and Calibration of High-Throughput Predictions of Chemical Distribution to Tissues". Enhancements - The Schmitt (2008) method for partition coefficients has been modified and calibrated using experimental data. - The new method is now default, although the previous approach is available (set regression=FALSE and Funbound.plasma.pc.correction=FALSE for other models). - The membrane affinity regression has been updated and always used in place of the old approach - Added function available_rblood2plasma - in vivo Rblood2plasma used when available - well-stirred blood correction and restrictive.clearance options added - New in vitro data from Uchimura et al. (2010), Brown et al. (2007) and Pirovano et al. (2016), Gulden et al. (2002) - Tonnelier et al. (2012) fup values of 0.005 changed to 0 in chem.physical_and_invitro.data - New tissue.data table with Ruark et al. (2014) that contains different formatting with human and rat specific data - parameterize_schmitt: added force.human.fub argument - added plasma protein and neutral lipid volume fractions to physiology.data for use in package - calc_mc_css: defaults to direct resampling. no longer coerces species to human when httkpop=TRUE. When another species is entered, a warning is thrown and the function behaves as if httkpop=FALSE. - updated help file references and examples - removed temperature from Schmitt parameters - overwrite 0 values for Fubound.plasma when overwrite=FALSE in add_chemtable - added vignette for generating partition coefficient plots - added DSSTOX info, new columns: DSSTox_Substance_Id, Structure_Formula, or Substance_Type. overwrote: MW and SMILES - added pc.data and obach2008 tables - httkpop option in calc_mc_css: well-stirred correction and new Funbound.plasma used by default. New partition coefficients used with other models by default. Bug Fixes - corrected parameterize_3comp default.to.human bug -- no longer always set to false Changes in version 1.5 (2017-03-03) This version is consistent with Ring et al. (2017) manuscript "Identifying populations sensitive to environmental chemicals by simulating toxicokinetic variability", which is accepted for publication at Environment International. Revisions include models, data, and vignettes for "httk-pop" functionality. "httk-pop" allows Monte Carlo simulation of physiological variability using data from the National Health and Nutrition Examination Survey. New Features - httk-pop Monte Carlo human variability functionality is the new default, although the previous approach is available (set httkpop=FALSE). Enhancements - default.to.human argument added to calc_hepatic_clearance and calc_stats. - calc_hepatic_clearance and calc_total_clearance do not necessarily require all parameters. - Argument tissue added to calc_analytic_css, calc_mc_css, and calc_mc_oral_equiv, enabling tissue specific calculations in addition to plasma. - calc_dow argument fraction.neutral changed to fraction.charged, thus treating Zwitter ions as neutrals - Multiple iv doses enabled in solve_* functions. - get_rblood2plasma function added to retrieve in vivo Rblood2plasma from chem.physical_and_invitro.data. Bug Fixes - Corrected minor bug for get_cheminfo - Corrected bug in monte_carlo: Upper bound placed at limit of detection for censored.params truncated normal distribution. However, this has no impact on the default case where the limit of detection is .01 the mean .005 because of the small standard deviation size (.0015). Only large coefficients of variation or fup values close to the limit of detection would be affected. Changes in version 1.4 (2016-02-03) This revision incorporates changes suggested by the reviewers of Pearce et al. (2017) manuscript, which was accepted, pending minor revision, in the Journal of Statistical Software (now included in vignettes). - Table name PK.physiology.data changed to physiology.data. Changes in version 1.3 (2015-10-14) This revision adds ~200 more chemicals (from two recent publications including Wetmore et al. (2015) and make several slight changes to improve usability and stability. Changes in version 1.2 (2015-05-11) This version is consistent with a newly submitted article Pearce et al. (2017) manuscript "httk: R Package for High-Throughput Toxicokinetics" to the Journal of Statistical Software describing use of this package. - This revision changes some model parameter names to follow a more systematic naming convention. - Minor bugs have been corrected. Changes in version 1.1 (2015-03-06) Initial public (CRAN) release (March 6, 2015)