Releases: USEPA/CompTox-ExpoCast-httk
v2.5.0
httk 2.5.0 (2024-12-20)
This release accompanies the submission of the new 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 more clear 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.
httk 2.4.0
httk 2.4.0 (2024-8-14)
This release accompanies the submission of the new 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 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 populatin 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
2.3.1
httk 2.3.1 (2023-3-19)
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_steadstate(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
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 (acceptible dosing.params are now
specified by the modelinfo_[MODEL].R file)
2.3.0
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 chemcials
- 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 avaialble
- 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 Fbio = Fabs * Fgut * Fhep 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 distringuish 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)
2.2.2
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 functionapply_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
andapply_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 fromparameterize_schmitt
- New function
calc_kair
separates calculation of blood:air, water:air, and mucus:air partition coefficients fromparameterize_gas_pbtk
Enhancements
- Added cutoff of logKow/logDow no greater than 6 for
calc_fup_correction
andcalc_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) modifcation 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_tksince 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 on the basis of specified model - Updated various function documentation
2.2.1
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.
2.2.0
version 2.2.0 (September, 2022)
This version accompanies the submission of the Breen et al. 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 classdata.table
, rather than as objectnhanes_mec_svy
of
classsurvey.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 (i.e., treat all simulated adults as "non-black" for purposes of GFR
estimation), to reflect recent changes in clinical practice. (Control this
behavior withhttkpop_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")
- Replaced HTTK-Pop data from NHANES cycles 2007-2012 with data from most
- 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.
- This may slightly change all predictions chemicals that are ionized in
- Replaced pKa values from Strope et al. (2018) with OPERA
- PBTK model equations:
- Revised renal clearance to be GFR x [Unbound conc in arterial plasma]
(previously it was GFR x [Unbound conc in kidney plasma])
- Revised renal clearance to be GFR x [Unbound conc in arterial 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 suggestion message to set default.to.human=TRUE when rat Fup is 0
- 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 fup measurement (that is, uncertainty) Monte Carlo 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 fromcalc_hep_clearance
to the
parameterize functions andinvitro_mc
-- can now be toggled with argument
"adjusted.Clint" - New vignette "Introduction to HTTK" added including 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 based toparameterize_schmitt
2.1.0
version 2.1.0 (March, 2022)
This version accompanies the submission of the Kapraun et al. 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
andparameterize_fetal_pbtk
- QSAR predicted chemical-specific plasma protein unbound plasma fraction and intrinsic hepatic clearance 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 and intrinsic hepatic clearance values 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 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, i.e. 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 Johanna Nyffeler)
2.0.4
version 2.0.4 (May 7, 2021)
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 values and fraction unbound in plasma 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)