add_chemtable and augment_tableload_sipes2018) no longer produce endless warningsThis 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.
This version addresses CRAN errors by making changes to the tests for the dermal PBTK model to ensure better performance across platforms.
load_honda2023 renamed to load_honda2025 to reflect publication date of Honda et al. (2025)convert_unitslist_models to provide description, reference, and DOI for models -- modelinfo files now can contain this informationchem.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.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)solve_model when plots=TRUE and output.units is specifiedThis 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)"
get_2023pfasinfo to allow easy identification of newly measured PFAS chemicalsparameterize_pfas1compkramer_evalparameterize_armitage, parametierize_kramer, and parameterize_IVDget_cheminfo -- replaced row-wise apply with complete.cases data subsetting. This results in a substantial speed increase, especially for Monte Carlo.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.calc_mc_tk is now implemented via data.table for efficiency.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 argumentcreate_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.listarmitage_estimate_sarea and armitage evalcreate_mc_samples() when httkpop = FALSE. (Previously, when httkpop = FALSE, rest-of-body compartment was incorrectly doubled in volume.)create_mc_samples was using human parameters for lumping non-human speciesparameterize_MODEL functions and solve_model as well as Monte Carlo-related functions: species is now correctly passed to all downstream functionscreate_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)calc_mc_tkcreate_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)get_physchem_param where pKa_Accept would not be returned if multiple parameters were requested at oncecalc_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.gen_input_params and the need to generate additional files and directories; now the user supplies the reference population parameters to solve_<model>_lifestage directly.gen_input_params.export_pbtk_sbml and export_pbtk_jarnac now write to tempdir by default.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.
calc_total_clearance to take into account systemic oral bioavailability: Cl_tot = f_bio / Css -- was using f_bio = 1 previouslycalc_css to increase stabilitycalc_tkstats, solve_model, calc_total_clearance, calc_analytic_css, calc_hep_bioavailability, calc_hep_clearance -- this has been correctedonUnload internal function call, appears to improve stability when using multiple models with deSolvelist_models to identify all available HTTK models.calc_tkstats, solve_model, calc_total_clearance, calc_analytic_css, calc_hep_bioavailability, calc_hep_clearance -- this has been correctedload_sipes2017, load_pradeep2020, load_dawson2021, load_honda2023 to speed up loading of in silico predicted values by only loading chemicals specified by argumentThis 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").
calc_analytic_css_1comp to reflect that Vdist is the effective plasma (not blood) volume (thanks Shenghong Wang)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 = TRUEsolve_model: Pass restrictive clearance argument to model parameterization functionparameterize_steadystate: pass minimum.Funbound.plasma to get_fupparameterize_1comp: pass "minimum.Funbound.plasma" argument to calc_vdistcalc_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 '...' argumentssolve_gas_pbtk: the "restrictive.clearance" argument default was changed from TRUE to FALSEcalc_vdist, parameterize_schmitt, and predict_partitioning_schmitt to correctly show how to predict volume of distribution from a list of parametersparameterize_sumclearances, parameterize_3comp2, solve_3comp2parameterize_1comp: Add calls to check_model for models "1compartment" and "3compartmentss", since we use parameterize_steadystate to parameterize "1compartment".solve_gas_pbtk is now non-restrictive by default, but argument restrictive.clearance=TRUE makes the model behave similarly to the default pbtk model.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.
calc_hep_clearance when model = "unscaled"calc_fabs.oral -- calculations now indicate that more chemicals are poorly absorbed.calc_css to handle models with no specified analytic solutionarmitage_eval so that pka_donor and pka_accept values now correctly used (thank you Meredith Scherer)solve_model when only specific times requesed and plots=TRUE (thank you Kimberly Troung)get_chem_id when using add_chemtable without DTXSIDs (thank you Marc Beal and Miyuki Breen)create_mc_samples where arguments were not getting passed to 'invitro_mc' (thank you Hsing-Chieh Lin and Weihsueh Chiu)solve_model where tsteps was ignored if times were specifiedcalc_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.calc_fabs.oral now calculates oral uptake rate kgutabs using Caco-2 permeability, according to method of Lennernas (1997) (Thank you ALTEX reviewers)get_fabsgut to get_fbio and modified function to use calc_fbio.oral rather than call oral bioavailability subfunctions directlycalc_kair to only allow neutral chemical fraction to partition into air (thank you Jon Arnot)solve_[MODEL] functions now exclusively pass arguments to deSolve through "..."calc_css to better calculate the day on which steady-state is reachedcheck_model to provide more informative error messages when key model parameters are missingsolve_model now limited to ten times higher than small.timesolve_model immediately after dose events to improve plottingThis patch addresses a number of bugs.
get_fabsgutcreate_mc_samples could not handle argument
parameters being a list (as in,
parameters=parameterize_steadystate(chem.name="bisphenola"))calc_css now explain that function is only applicable
to dynamical (time-evolving) models and handles errors with other models
(such as 3compartmentss) more gracefullyconvert_units were
actually ppmw. Cannot calculate ppmv without chemical-specific liquid density,
which we do not know.armitage_eval to allow chemical specification by usual arguments
chem.name, chem.cas, and DTXSID. Preserved casrn.vector for backward compatibility.armitage_eval to allow multiple instances of chemicals (no longer
using CASRN as row names) -- thank you Katie Paul Friedman for suggestionsolve_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)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
calc_css works for accumulative chemicalsconvert_unitssolve_model is no longer restricted to four
significant figurescalc_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)convert_units to handle multiple molecular weights -- this enables
convert_mc_oral_equivalent to take a table of parameters for Monte Carloget_clint and
get_invtroPK_param to be more informativeinvitrouv=FALSE (thanks cm16120)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)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.invitro_uvbenchmark_httk to compare current function of the
package against historical performance (stored in data.frame httk.performance)calc_tkstats to allow PBTK model to distribute iv dosesload_dawson2021 (thank you Alex Fisher and Mike Tornero!)armitage_eval to
properly convert water solubility from OPERA units)convert_units, expanding the variety of unit conversions
available -- it is critical to distinguish between state of matter
(liquid vs. gas)get_physchem_param to be case-insensitivecal_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)calc_ionization that caused error when argument pH was a
vector -- impacts Monte Carlo for ionized compoundssolve_model returned other than requested times when
argument times was specified (thanks Kimberly Truong)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 fupcalc_dow for the distribution coefficientcalc_ma separates membrane affinity calculation from
parameterize_schmittcalc_kair separates calculation of blood:air, water:air, and
mucus:air partition coefficients from parameterize_gas_pbtkcalc_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 1calc_analytic_css_pbtk to reflect
Breen et al. (2022) modification
to glomerular filtration in the kidneyget_cheminfo now lists required parameters when chemicals are excluded
(thanks Ben Savage)daily.dose argument to calc_mc_css (still defaults to 1
mg/kg/day)calc_mc_css and calc_mc_tk since now
internally using do.call wherever possible to pass argumentssolve_modelpredict_partitioning_schmitt identifying
corresponding equations in
Schmitt (2008)class.exclude to get_cheminfo -- defaults to TRUE, but if
FALSE then chemical classes are not excluded based on specified modelThis 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.
This version accompanies the submission of the Breen et al. (2022) manuscript "Simulating Toxicokinetic Variability to Identify Susceptible and Highly Exposed Populations"
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".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)httkpop_generate() argument gfr_resid_var)default.to.human=TRUE when rat fup
is 0 (Thanks Jim Sluka)get_wetmore...) for backward compatibility
(Thanks Jim Sluka)invitro_mc to remove inconsistencies and correct handling of
fup where median is zero but upper 95th is non-zeroremd0non0u95 to draw random numbers such that the
median is zero and the upper 97.5th quantile is non-zero, taking limit of
detection into accountcalc_mc_css and
calc_mc_oral_equivinvitro_mc to directly allow user to turn
uncertainty and variability off (previously this was done by setting CV to
NULL)calc_hep_clearance to the
parameterize_X functions and invitro_mc -- can now be toggled with argument
adjusted.Clintcalc_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!)calc_half_life and prohibited the ability to obtain steady state parameters.create_mc_samples related to default.to.human argument not
being passed to parameterize_schmittThis version accompanies the submission of the Kapraun et al. (2022) manuscript "Evaluation of a Rapid, Generic Human Gestational Dose Model"
solve_fetal_pbtk and parameterize_fetal_pbtkload_dawson2021load_pradeep2020calc_halflife (thank you Imran Shah)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.convert_units added to ensure consistency in
unit conversions across functionspredict_partitioning_schmitt -- now we read list of
tissues needed for a model from modelinfo_X.R variable alltissuesget_cheminfo and table
chem.phys_and_invitro.data (thank you Lynne Haber and Mark Bradley)add_chemtable to address ionization (thank you Johann Fribl)get_cheminfo to incorporate a chemical class filter to remove
"PFAS" compounds for all models, except 3compartmentss, based on
Wambaugh et al.(2015).calc_ionization)
that caused pKa`s to be ignored in many cases (thank you Wu Yaoxing)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.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).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).get_cheminfo to filter volatile compounds using Henry`s law
constant for all models, excluding the "gas_pbtk" model.calc_stats to calc_tkstats -- calc_stats remains temporarily
but calls calc_tkstatscalc_stats and
calc_hepatocyte_clearanceget_cheminfo and
parameterize_schmitt now handle odd cases (like species is zero but human is
not) betterget_cheminfo is now case insensitiveadd_chemtable (really internal function augment.table) changed to enforce
significant figures (default 4)allow.na argument to add_chemtable so that values can be
deleted (thanks Nisha Sipes)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)calc_tkstats corrected to display Rblood2plasmaparameterize_pbtkget_physchem_param to look up any missing parameter needed in predicting
tissue:plasma partition coefficients using predict_partitioning_schmitt.set_httk_precision is now used throughout code to enforce a
standard set of significant figures (4) and precision (nothing less than 1e-9).calc_hepatic_clearance wrapper function for calc_hep_clearance to
allow backwards compatibilityget_chemid to not crash in certain cases (thank you, Shannon Bell)calc_mc_oral_equivalent (was sometimes returning all
samples unasked, thank you Dan Dawson)This version is consistent with the Linakis et al. (2020) manuscript "Development and Evaluation of a High Throughput Inhalation Model for Organic Chemicals"
Significantly rewrote underlying code to allow more easy integration of new models. (goodbye spaghetti code!)
calc_analytic_csscalc_mc_cssconvert_httkpop (renamed from convert_httk)solve_* model functionshttkpop_biotophys_default replaces httkpop_bioconvert_httkpop replaces convert_httksolve_model (mostly used by solve_* model functions)calc_mc_tk (performs Monte Carlo simulation using a solve_* function)analytic_css_*: Model-specific analytic steady-state solutionconvert_httkpop_*: Model-specific functions for converting HTTK-pop
biometrics to model parametersEPAs 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."
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.
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.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.calc_analytic_css to handle all models in the same manner.calc_mc_oral_equivalent to "mgpkgpday" and "umolpkgpday".
(idea from Katie Paul-Friedman) 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 filehonda.ivivecalc_css functionscalc_analytic_css
functions, and calc_mc... functionsget_physchem_param: exported and now works with vectors of CAS
and/or parametersdefault.to.human=TRUE (human p-value is now used).
(thank you Jason Phillips and Shyam Patel for bug report).calc_mc_css warningscalc_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).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"
armitage_evalarmitage_estimate_sareacalc_mc_css) to use sets
of assumptions identified by
Honda et al.
(for example, IVIVE="Honda1") (thank you Katie Paul-Friedman)load_sipes2017 to be much faster by loading an image by defaultSipes2017 and load_sipes2017.get_wetmore_X functions changed to get_lit_Xhttkpop_bio exported to user functions
(function name since changed to httkpop_biotophys_default)solve_[MODEL] functionshematocrit argument to calc_rblood2plasmaget_cheminfo help file: exclude.fub.zero defaults to
FALSE for model 3compartmentss and TRUE for otherscalc_mc_css bug: species now passed to function monte_carloThis 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.
regression) and adjusted fup (adjusted.Funbound.plasma).load_sipes2017().calc_mc_css runs faster when not using httk-pop and calculating
Rblood2plasma, now only calculated once.is.pharma has been added as a function.calc_analytic_css does not recalculate all partition coefficients when
specifying a tissue.NA have been replaced with
predictions from OPERA where available.parameterize_1comp) and 3compartmentss
(parameterize_steadystate). Oral doses for these models are now multiplied by
hepatic.bioavailability and Fgutabs before entering systemic
circulation.modelPBTK.c, the source file for the model "pbtk", now has updated
variable names, and corresponding changes are made in solve_pbtk.calc_mc_css bug: daily.dose now working as an argument (previously only running as 1).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".
calc_mc_csscalc_mc_css, and added faster
method for calculating Rblood2plasma for 3compartmentss.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".
regression=FALSE and Funbound.plasma.pc.correction=FALSE for other
models).available_rblood2plasmaparameterize_schmitt: added force.human.fub argumentcalc_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.Fubound.plasma when overwrite=FALSE in
add_chemtablecalc_mc_css: well-stirred correction and new
Funbound.plasma used by default. New partition coefficients used with other models by default.parameterize_3comp default.to.human bug -- no longer always set to falseThis 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.
httkpop=FALSE).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.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 neutralssolve_* functions.get_rblood2plasma function added to retrieve in vivo Rblood2plasma
from chem.physical_and_invitro.data.get_cheminfomonte_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.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).
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.
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.
Initial public (CRAN) release (March 6, 2015)