calc_mc_css: Distribution of chemical steady state concentration with...

View source: R/calc_mc_css.R

calc_mc_cssR Documentation

Distribution of chemical steady state concentration with uncertainty and variability

Description

For a given chemical and fixed dose rate this function determines a distribution of steady-state concentrations reflecting measurment uncertainty an population variability. Uncertainty and variability are simulated via the Monte Carlo method – many sets of model parameters are drawn according to probability distributions described in Ring et al. (2017) (doi: 10.1016/j.envint.2017.06.004) for human variability and Wambaugh et al. (2019) (doi: 10.1093/toxsci/kfz205) for measurement uncertainty. Monte Carlo samples are generated by the function create_mc_samples. To allow rapid application of the Monte Carlo method we make use of analytical solutions for the steady-state concentration for a particular model via a given route (when available) as opposed to solving the model numerically (that is, using differential equations). For each sample of the Monte Carlo method (as specified by argument samples) the parameters for the analytical solution are varied. An ensemble of steady-state predictions are produced, though by default only the quantiles specified by argument which.quantile are provided. If the full set of predicted values are desired use set the argument return.samples to TRUE.

Usage

calc_mc_css(
  chem.cas = NULL,
  chem.name = NULL,
  dtxsid = NULL,
  parameters = NULL,
  samples = 1000,
  which.quantile = 0.95,
  species = "Human",
  daily.dose = 1,
  suppress.messages = FALSE,
  model = "3compartmentss",
  httkpop = TRUE,
  invitrouv = TRUE,
  calcrb2p = TRUE,
  censored.params = list(),
  vary.params = list(),
  return.samples = FALSE,
  tissue = NULL,
  concentration = "plasma",
  output.units = "mg/L",
  invitro.mc.arg.list = NULL,
  httkpop.generate.arg.list = list(method = "direct resampling"),
  convert.httkpop.arg.list = NULL,
  parameterize.arg.list = NULL,
  calc.analytic.css.arg.list = NULL
)

Arguments

chem.cas

Chemical Abstract Services Registry Number (CAS-RN) – if parameters is not specified then the chemical must be identified by either CAS, name, or DTXISD

chem.name

Chemical name (spaces and capitalization ignored) – if parameters is not specified then the chemical must be identified by either CAS, name, or DTXISD

dtxsid

EPA's DSSTox Structure ID (https://comptox.epa.gov/dashboard) – if parameters is not specified then the chemical must be identified by either CAS, name, or DTXSIDs

parameters

Parameters from the appropriate parameterization function for the model indicated by argument model

samples

Number of samples generated in calculating quantiles.

which.quantile

Which quantile from Monte Carlo simulation is requested. Can be a vector.

species

Species desired (either "Rat", "Rabbit", "Dog", "Mouse", or default "Human"). Species must be set to "Human" to run httkpop model.

daily.dose

Total daily dose, mg/kg BW.

suppress.messages

Whether or not to suppress output message.

model

Model used in calculation,'gas_pbtk' for the gas pbtk model, 'pbtk' for the multiple compartment model, '3compartment' for the three compartment model, '3compartmentss' for the three compartment steady state model, and '1compartment' for one compartment model. This only applies when httkpop=TRUE and species="Human", otherwise '3compartmentss' is used.

httkpop

Whether or not to use population generator and sampler from httkpop. This is overwrites censored.params and vary.params and is only for human physiology. Species must also be set to 'Human'.

invitrouv

Logical to indicate whether to include in vitro parameters in uncertainty and variability analysis

calcrb2p

Logical determining whether or not to recalculate the chemical ratio of blood to plasma

censored.params

The parameters listed in censored.params are sampled from a normal distribution that is censored for values less than the limit of detection (specified separately for each parameter). This argument should be a list of sublists. Each sublist is named for a parameter in "parameters" and contains two elements: "CV" (coefficient of variation) and "LOD" (limit of detection, below which parameter values are censored. New values are sampled with mean equal to the value in "parameters" and standard deviation equal to the mean times the CV. Censored values are sampled on a uniform distribution between 0 and the limit of detection. Not used with httkpop model.

vary.params

The parameters listed in vary.params are sampled from a normal distribution that is truncated at zero. This argument should be a list of coefficients of variation (CV) for the normal distribution. Each entry in the list is named for a parameter in "parameters". New values are sampled with mean equal to the value in "parameters" and standard deviation equal to the mean times the CV. Not used with httkpop model.

return.samples

Whether or not to return the vector containing the samples from the simulation instead of the selected quantile.

tissue

Desired steady state tissue concentration. Default is of NULL typically gives whole body plasma concentration.

concentration

Desired concentration type: 'blood','tissue', or default 'plasma'. In the case that the concentration is for plasma, selecting "blood" will use the blood:plasma ratio to estimate blood concentration. In the case that the argument 'tissue' specifies a particular tissue of the body, concentration defaults to 'tissue' – that is, the concentration in the If cocentration is set to 'blood' or 'plasma' and 'tissue' specifies a specific tissue then the value returned is for the plasma or blood in that specific tissue.

output.units

Plasma concentration units, either uM or default mg/L.

invitro.mc.arg.list

List of additional parameters passed to invitro_mc

httkpop.generate.arg.list

Additional parameters passed to httkpop_generate.

convert.httkpop.arg.list

Additional parameters passed to the convert_httkpop_* function for the model.

parameterize.arg.list

A list of arguments to be passed to the model parameterization function (that is, parameterize_MODEL) corresponding to argument "model". (Defaults to NULL.)

calc.analytic.css.arg.list

Additional parameters passed to calc_analytic_css.

Details

The chemical-specific steady-state concentration for a dose rate of 1 mg/kg body weight/day can be used for in in vitro-in vivo extrapolation (IVIVE) of a bioactive in vitro concentration by dividing the in vitro concentration by the steady-state concentration to predict a dose rate (mg/kg/day) that would produce that concentration in plasma. Using quantiles of the distribution (such as the upper 95th percentile) allow incorporation of uncertainty and variability into IVIVE.

Reverse Dosimetry Toxicodynamic IVIVE

Reverse Dosimetry Toxicodynamic IVIVE

Figure from Breen et al. (2021) (doi: 10.1080/17425255.2021.1935867) shows reverse dosimetry toxicodynamic IVIVE. Equivalent external dose is determined by solving the TK model in reverse by deriving the external dose (that is, TK model input) that produces a specified internal concentration (that is, TK model output). Reverse dosimetry and IVIVE using HTTK relies on the linearity of the models. We calculate a scaling factor to relate in vitro concentrations (uM) to administered equivalent doses (AED). The scaling factor is the inverse of the steady state plasma concentration (Css) predicted for a 1 mg/kg/day exposure dose rate. We use Monte Carlo to simulate variability and propagate uncertainty; for example, to calculate an upper 95th percentile Css,95 for individuals who get higher plasma concentrations from the same exposure.

The Monte Carlo methods used here were recently updated and described by Breen et al. (submitted).

httk-pop is used only for humans. For non-human species biological variability is simulated by drawing parameters from uncorellated log-normal distributions.

Chemical-specific httk data are available primarily for human and for a few hundred chemicals in rat. All in silico predictions are for human. Thus, when species is specified as rabbit, dog, or mouse, the user can choose to set the argument default.to.human to TRUE so that this function uses the appropriate physiological data (volumes and flows) but substitutes human fraction unbound, partition coefficients, and intrinsic hepatic clearance.

If the argument tissue is used, the steady-state concentration in that tissue, if available, is provided. If that tissue is included in the model used (specified by arguement model) then the actual tissue concentration is provided. Otherwise, the tissue-specific partition coefficient is used to estimate the concentration from the plasma.

The six sets of plausible IVIVE assumptions identified by Honda et al. (2019) (doi: 10.1371/journal.pone.0217564) are:

in vivo Conc. Metabolic Clearance Bioactive Chemical Conc. TK Statistic Used*
Honda1 Veinous (Plasma) Restrictive Free Mean Conc.
Honda2 Veinous Restrictive Free Max Conc.
Honda3 Veinous Non-restrictive Total Mean Conc.
Honda4 Veinous Non-restrictive Total Max Conc.
Honda5 Target Tissue Non-restrictive Total Mean Conc.
Honda6 Target Tissue Non-restrictive Total Max Conc.

*Assumption is currently ignored because analytical steady-state solutions are currently used by this function.

Value

Quantiles (specified by which.quantile) of the distribution of plasma steady-stae concentration (Css) from the Monte Carlo simulation

Author(s)

Caroline Ring, Robert Pearce, John Wambaugh, Miyuki Breen

References

Wambaugh, John F., et al. "Toxicokinetic triage for environmental chemicals." Toxicological Sciences 147.1 (2015): 55-67.

Ring, Caroline L., et al. "Identifying populations sensitive to environmental chemicals by simulating toxicokinetic variability." Environment international 106 (2017): 105-118.

Honda, Gregory S., et al. "Using the Concordance of In Vitro and In Vivo Data to Evaluate Extrapolation Assumptions." 2019. PLoS ONE 14(5): e0217564.

Rowland, Malcolm, Leslie Z. Benet, and Garry G. Graham. "Clearance concepts in pharmacokinetics." Journal of pharmacokinetics and biopharmaceutics 1.2 (1973): 123-136.

See Also

calc_analytic_css

create_mc_samples

Examples

# Set the number of samples (NSAMP) low for rapid testing, increase NSAMP 
# for more stable results. Default value is 1000:
NSAMP = 10

# Basic in vitro - in vivo extrapolation with httk, convert 3 uM in vitro
# concentration of chemical with CAS 2451-62-9 to mg/kg/day:
set.seed(1234)
3/calc_mc_css(chem.cas="2451-62-9", samples=NSAMP, output.units="uM")
# The significant digits should give the same answer as:
set.seed(1234)
calc_mc_oral_equiv(chem.cas="2451-62-9", conc=3, samples=NSAMP)  


 set.seed(1234)
 calc_mc_css(chem.name='Bisphenol A', output.units='uM',
             samples=NSAMP, return.samples=TRUE)

 set.seed(1234)
 calc_mc_css(chem.name='Bisphenol A', output.units='uM',
             samples=NSAMP,
             httkpop.generate.arg.list=list(method='vi'))
                          
 # The following example should result in an error since we do not 
 # estimate tissue partitioning with '3compartmentss'.                         
 set.seed(1234)
 try(calc_mc_css(chem.name='2,4-d', which.quantile=.9,
             samples=NSAMP,
             httkpop=FALSE, tissue='heart'))
 
# But heart will work with PBTK, even though it's lumped since we estimate
# a partition coefficient before lumping:
 set.seed(1234)
 calc_mc_css(chem.name='2,4-d', model='pbtk',
             samples=NSAMP,
             which.quantile=.9, httkpop=FALSE, tissue='heart')

 set.seed(1234)
 calc_mc_css(chem.cas = "80-05-7", which.quantile = 0.5,
             output.units = "uM", samples = NSAMP,
             httkpop.generate.arg.list=list(method='vi', gendernum=NULL, 
             agelim_years=NULL, agelim_months=NULL,
             weight_category = c("Underweight","Normal","Overweight","Obese")))

 params <- parameterize_pbtk(chem.cas="80-05-7")
 set.seed(1234)
 calc_mc_css(parameters=params,model="pbtk", samples=NSAMP)


 set.seed(1234)
 # Standard HTTK Monte Carlo 
 calc_mc_css(chem.cas="90-43-7", model="pbtk", samples=NSAMP)
 set.seed(1234)
 # HTTK Monte Carlo with no measurement uncertainty (pre v1.10.0):
 calc_mc_css(chem.cas="90-43-7",
 model="pbtk",
 samples=NSAMP,
 invitro.mc.arg.list = list(
   adjusted.Funbound.plasma = TRUE,
   poormetab = TRUE, 
   fup.censored.dist = FALSE, 
   fup.lod = 0.01, 
   fup.meas.cv = 0.0, 
   clint.meas.cv = 0.0, 
   fup.pop.cv = 0.3, 
   clint.pop.cv = 0.3))

 # HTTK Monte Carlo with no HTTK-Pop physiological variability):
 set.seed(1234)
 calc_mc_css(chem.cas="90-43-7",model="pbtk",samples=NSAMP,httkpop=FALSE)

 # HTTK Monte Carlo with no in vitro uncertainty and variability):
 set.seed(1234)
 calc_mc_css(chem.cas="90-43-7",model="pbtk",samples=NSAMP,invitrouv=FALSE)

 # HTTK Monte Carlo with no HTTK-Pop and no in vitro uncertainty and variability):
 set.seed(1234)
 calc_mc_css(chem.cas="90-43-7" ,model="pbtk",
             samples=NSAMP, httkpop=FALSE, invitrouv=FALSE)

 # Should be the same as the mean result:
 calc_analytic_css(chem.cas="90-43-7",model="pbtk",output.units="mg/L")

 # HTTK Monte Carlo using basic Monte Carlo sampler:
 set.seed(1234)
 calc_mc_css(chem.cas="90-43-7",
             model="pbtk",
             samples=NSAMP,
             httkpop=FALSE,
             invitrouv=FALSE,
             vary.params=list(Pow=0.3))


httk documentation built on March 7, 2023, 7:26 p.m.