tcplfit2: A Concentration-Response Modeling Utility
Introduction
The package tcplfit2
is used to perform basic
concentration-response curve fitting. The original
tcplFit()
functions in the ToxCast Data Analysis
Pipeline (tcpl) package performed basic concentration-response curve
fitting to 3 models: Hill, gain-loss [a modified Hill], and constant.
With tcplfit2
, the concentration-response functionality of
the package tcpl
has been expanded and is being used to
process high-throughput screening (HTS) data generated at the US
Environmental Protection Agency, including targeted assay data in
ToxCast, high-throughput transcriptomics (HTTr), and high-throughput
phenotypic profiling (HTPP) screening results. The tcpl
R
package continues to be used to manage, curve fit, plot, and populate
its linked MySQL database, invitrodb. Processing with tcpl
version 3.0 and beyond depends on the stand-alone tcplfit2
package to allow a wider variety of concentration-response models (when
using invitrodb in the 4.0 schema and beyond).
The main set of extensions includes additional concentration-response
models like those contained in the program BMDExpress2. These
include exponential, polynomial (1 & 2), and power functions in
addition to the original Hill, gain-loss and constant models. Similar to
BMDExpress2, a defined benchmark response (BMR) level is used to
estimate a benchmark dose (BMD), which is the concentration where the
curve fit intersects with this BMR threshold. One final addition was to
let the hitcall value be a number ranging from 0 to 1 (in contrast to
binary hitcall values from tcplFit()
). Continuous hitcall
values in tcplfit2
are defined as the product of three
proportional weights testing the following: 1) the AIC of the winning
model is better than the constant model (i.e. the winning model is not
fit to background noise), 2) at least one concentration has a median
response that exceeds cutoff (i.e. outside the cutoff band in
bidirectional modeling cases), and 3) the top from the winning model
exceeds the cutoff (i.e. outside the cutoff band in bidirectional
modeling cases).
Although developed primarily for bioactivity data curve fitting in
the Center for Computational Toxicology and Exposure, the
tcplfit2
package is written to be generally applicable for
the broader chemical-screening community and their standalone
model-fitting applications.
This vignette describes some functionality of the
tcplfit2
package with a few simple standalone examples.
Concentration-Response Modeling
Multiple concentration experiments allow one to evaluate a chemical’s impact on a biological response with increasing concentration. Concentration-response modeling is aimed at leveraging multiple concentration data to predict the underlying relationship between increasing chemical concentrations and its impact on a measured/observable biological response. Predicting the underlying concentration-response relationship can allow one to assess not just a chemical’s bioactivity for a particular response of interest/concern, but also its potency. Though, bioactivity and potency may be estimated via other statical analyses (e.g. one-way ANOVA) the advantage to concentration-response modeling is that it evaluates the the shape of the underlying relationship and allows one to derive a point-of-departure (POD) not dependent upon experimental concentrations.
In this section we provide three examples for concentration-response modeling:
- Example 1: Single series fit with
concRespCore
. - Example 2: Multiple series fit using
tcplfit2_core
andtcplhit2_core
as stand-alone functions, sequentially. - Example 3: Curve fitting similar to what is
executed in the ToxCast pipeline (
tcpl
).
This is followed by a section providing details about the continuous hitcall estimation with a brief overview of interpreting these values.
Concentration-Response Modeling for a Single Series with
concRespCore
concRespCore
is the main wrapper function performing
concentration-response modeling. Under the hood,
concRespCore
utilizes the tcplfit2_core
and
tcplhit2_core
functions, to perform curve fitting,
hitcalling and potency estimation. The example in this section shows how
to use the concRespCore
function; and we refer readers to
the Concentration-Response Modeling for Multiple Series
with tcplfit2_core
and tcplhit2_core
section later in the vignette to see how tcplfit2_core
and
tcplhit2_core
may be used separately.
The first argument for concRespCore
is a named list,
called ‘row’, containing the following inputs:
conc
- a numeric vector of concentrations (not log concentrations).resp
- a numeric vector of responses, of the same length asconc
. Note replicates are allowed, i.e. there may be multiple response values (resp
) for one concentration dose group.cutoff
- a single numeric value indicating the response at which a relevant level of biological activity occurs. This value is typically used to determine if a curve is classified as a “hit”. In ToxCast, this is usually 3 times the median absolute deviation around the baseline (BMAD) (i.e. \(cutoff = 3*BMAD\)). However, users are free to make other choices more appropriate for their given assay and data.bmed
- a single numeric value giving the baseline median response. If set to zero then the data are already zero-centered. Otherwise, this value is used to zero-center the data by shifting the entire response series by the specified amount.onesd
- a single numeric value giving one standard deviation of the baseline responses. This value is used to calculate the benchmark response (BMR), where \(BMR = {\text{onesd}}\times{\text{bmr_scale}}\). Thebmr_scale
defaults to 1.349.
The row
object may include other elements providing
meta-data/annotations to be included as part of the
concRespCore
function output – for example, chemical names
(or other identifiers), assay name, name of the response being modeled,
etc.
A user may also need to include other arguments in the
concRespCore
function, which internally control the
execution of curve fitting, hitcalling, and potency estimation:
conthits
- Logical argument. IfTRUE
(the default, and recommended usage), the hitcall returned will be a value between 0 and 1.errfun
- Allows a user to specify the assumed distribution of errors. The default is “dt4”, indicating models are fit assuming the errors follow a Student’s t-distribution with 4 degrees of freedom. This error distribution has wider tails that diminish the influence of outlier values to produce a more robust estimate. Alternatively, one may assume the errors are normally distributed by changing it to “dnorm”.poly2.biphasic
- Logical argument. IfTRUE
(the default, and recommended usage), the polynomial 2 model will allow a biphasic curve to be fit to the response (i.e. increase then decrease or vice versa). However, one may force monotonic fitting withFALSE
(i.e. a parabola where the vertex is not in the tested concentration range – specifically the vertex will be somwhere less than 0).do.plot
- Logical argument. IfTRUE
(the default isFALSE
), a plot of all fitted curves will be generated. Note, an alternative to this plotting functionality is provided by another plotting function in this package, namelyplot_allcurves
(see Plotting for further details).fitmodels
- a character vector indicating which models to fit the concentration-response data with. If thefitmodels
parameter is specified, the constant model (cnst
) model must be included because it is used for comparison in the hitcalling process. However, any other model may be omitted by the user, for example the gain-loss (gnls
) model is excluded in some applications.
For a full list of potential arguments, refer to the function
documentation (?concRespCore
).
The following code provides a simple example for using
concRespCore
, including input data set-up and executing the
modeling with concRespCore
.
# tested concentrations
conc <- list(.03,.1,.3,1,3,10,30,100)
# observed responses at respective concentrations
resp <- list(0,.2,.1,.4,.7,.9,.6, 1.2)
# row object with relevant parameters
row = list(conc = conc,resp = resp,bmed = 0,cutoff = 1,onesd = 0.5,name="some chemical")
# execute concentration-response modeling through potency estimation
res <- concRespCore(row,
fitmodels = c("cnst", "hill", "gnls",
"poly1", "poly2", "pow", "exp2", "exp3",
"exp4", "exp5"),
conthits = T)
The output of this run will be a data frame, with one row, summarizing the winning model results.
name | n_gt_cutoff | cutoff | fit_method | top_over_cutoff | rmse | a | b | tp | p | q | ga | la | er | bmr | bmdl | bmdu | caikwt | mll | hitcall | ac50 | ac50_loss | top | ac5 | ac10 | ac20 | acc | ac1sd | bmd | conc | resp | errfun |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
some chemical | 1 | 1 | hill | 1.15815495321783 | 0.175031168209235 | 1.22559932960684 | 0.77528437488152 | 2.55427178874732 | -2.4678530055911 | 0.6745 | 2.34181121934655 | 4.82255254331477 | 6.06484549947882e-05 | 4.49230078464142 | 0.956021717218218 | 2.2159108634366 | 1.15815495321783 | 0.05303233121277 | 0.138457504288482 | 0.390246978500735 | 17.4326688230274 | 1.58002449695213 | 3.31477499075104 | 0.03|0.1|0.3|1|3|10|30|100 | 0|0.2|0.1|0.4|0.7|0.9|0.6|1.2 | dt4 |
One can plot the winning curve by passing the output
(res
) to the function concRespPlot2
. This
function returns a basic ggplot2
object, which is meant to
leverage the flexibility and modularity of ggplot2
objects
allowing users the ability to customize the plot by adding layers of
detail. For more information on customizing plots we refer users to the
Plotting section.
# plot the winning curve from example 1, add a title
concRespPlot2(res, log_conc = TRUE) + ggtitle("Example 1: Chemical A")
Figure 1: The winning model fit for a single concentration-response series. The concentrations (x-axis) are in \(\mathbf{log_{10}}\) units.
Concentration-Response Modeling for Multiple Series with
tcplfit2_core
and tcplhit2_core
In this section, we provide an example of how to fit a set of
concentration-response series from a single assay using the
tcplfit2_core
and tcplhit2_core
functions
sequentially. Using the functions sequentially allows users greater
flexibility to examine the intermediate output. For example, the output
from tcplfit2_core
contains model parameters for all models
fit to the provided concentration-response series. Furthermore,
tcplfit2_core
results may be passed to
plot_allcurves
, which generates a comparative plot of all
curves fit to a concentration-response series (see Plotting for further details).
Here, data from a Tox21 high-throughput screening (HTS) assay
measuring estrogen receptor (ER) agonist activity are examined. The data
were processed with the ToxCast pipeline (tcpl
), stored,
and retrieved from the Level 3 (mc3) table in the invitrodb
database. At Level 3, data have already undergone pre-processing steps
(prior to tcpl
), including transformation of response
values (including zero centering) and concentration normalization. For
this example, 6 out of the 100 available chemical samples (spids) from
mc3
are selected. Concentration-Response
Modeling for tcpl
-like data without a database
connection highlights how to process from the original source
data.
The following code demonstrates how to set up the input data and
execute curve fitting and hitcalling with the tcplfit2_core
and tcplhit2_core
functions, respectively.
# read in the data
# Loading in the level 3 example data set from invitrodb stored in tcplfit2
data("mc3")
# view the first 6 rows of the mc3 data
# dtxsid = unique chemical identifier from EPA's DSSTox Database
# casrn = unique chemical identifier from Chemical Abstracts Service
# name = chemical name
# spid = sample id
# logc = log_10 concentration value
# resp = response
# assay = assay name
head(mc3)
#> dtxsid casrn name spid logc resp
#> 1 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 1.477121 36.3584083
#> 2 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 -2.000000 0.3244336
#> 3 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 0.000000 9.0799288
#> 4 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 -3.000000 1.4104484
#> 5 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 -1.000000 0.5884602
#> 6 DTXSID7020182 80-05-7 Bisphenol A Tox21_400088 -2.000000 -0.5267254
#> assay
#> 1 TOX21_ERa_BLA_Agonist_ratio
#> 2 TOX21_ERa_BLA_Agonist_ratio
#> 3 TOX21_ERa_BLA_Agonist_ratio
#> 4 TOX21_ERa_BLA_Agonist_ratio
#> 5 TOX21_ERa_BLA_Agonist_ratio
#> 6 TOX21_ERa_BLA_Agonist_ratio
# estimate the background variability
# assume the two lowest concentrations (logc <= -2) for baseline in this example
# Note: The baseline may be assay/application specific
temp <- mc3[mc3$logc<= -2,"resp"] # obtain response in the two lowest concentrations
bmad <- mad(temp) # obtain the baseline median absolute deviation
onesd <- sd(temp) # obtain the baseline standard deviation
cutoff <- 3*bmad # estimate the cutoff, use the typical cutoff=3*BMAD
# select six chemical samples
# Note: there may be more than one sample processed for a given chemical
spid.list <- unique(mc3$spid)
spid.list <- spid.list[1:6]
# create empty objects to store fitting results and plots
model_fits <- NULL
result_table <- NULL
plt_lst <- NULL
# loop over the samples to perform concentration-response modeling & hitcalling
for(spid in spid.list) {
# select the data for just this sample
temp <- mc3[is.element(mc3$spid,spid),]
# The data file stores concentrations in log10 units, so back-transform to "raw scale"
conc <- 10^temp$logc
# Save the response values
resp <- temp$resp
# pull out all of the chemical identifiers and the assay name
dtxsid <- temp[1,"dtxsid"]
casrn <- temp[1,"casrn"]
name <- temp[1,"name"]
assay <- temp[1,"assay"]
# Execute curve fitting
# Input concentrations, responses, cutoff, a list of models to fit, and other model fitting requirements
# force.fit is set to true so that all models will be fit regardless of cutoff
# bidirectional = FALSE indicates only fit models in the positive direction.
# if using bidirectional = TRUE the coff only needs to be specified in the positive direction.
model_fits[[spid]] <- tcplfit2_core(conc, resp, cutoff, force.fit = TRUE,
fitmodels = c("cnst", "hill", "gnls",
"poly1", "poly2", "pow",
"exp2","exp3", "exp4", "exp5"),
bidirectional = FALSE)
# Get a plot of all curve fits
plt_lst[[spid]] <- plot_allcurves(model_fits[[spid]],
conc = conc, resp = resp, log_conc = TRUE)
# Pass the output from 'tcplfit2_core' to 'tcplhit2_core' along with
# cutoff, onesd, and any identifiers
out <- tcplhit2_core(model_fits[[spid]], conc, resp, bmed = 0,
cutoff = cutoff, onesd = onesd,
identifiers = c(dtxsid = dtxsid, casrn = casrn,
name = name, assay = assay))
# store all results in one table
result_table <- rbind(result_table,out)
}
The output from tcplfit2_core
is a nested list
containing the following elements:
modelnames
- a vector of the model names fit to the data.errfun
- a character string specifying the assumed error distribution for model fitting.- Nested list elements, specified by their model names, and contain the estimated model parameters and other details when the corresponding model is fit to the provided data.
The hidden code chunk below shows how to view the structure of model fit output.
# shows the structure of the output object from tcplfit2_core (only top level)
str(model_fits[[1]],max.lev = 1)
#> List of 12
#> $ cnst :List of 5
#> $ hill :List of 17
#> $ gnls :List of 22
#> $ poly1 :List of 13
#> $ poly2 :List of 17
#> $ pow :List of 15
#> $ exp2 :List of 15
#> $ exp3 :List of 17
#> $ exp4 :List of 15
#> $ exp5 :List of 17
#> $ modelnames: chr [1:10] "cnst" "hill" "gnls" "poly1" ...
#> $ errfun : chr "dt4"
Taking the “Hill” model as an example, the structure of the “Hill” model output elements are as follows, along with details of what is contained in each of the elements:
success
- a binary indicator, where 1 indicates the fit was successful.aic
- the Akaike Information Criterion (AIC)cov
- a binary indicator, where 1 indicates estimation of the inverted hessian was successfulrme
- the root mean square error around the curvemodl
- a numeric vector of model predicted responses at the given concentrationstp
,ga
,p
- estimated model parameters for the “Hill” modeltp_sd
,ga_sd
,p_sd
- standard deviations of the model parameters for the “Hill” modeler
- the numeric error termer_sd
- the numeric value for the standard deviation of the error termpars
- a character vector containing the name of model parameters estimated for the “Hill” modelsds
- a character vector containing the name of parameters storing the standard deviation of model parameters for the “Hill” modeltop
- the maximal predicted change in response from baseline (i.e. \(y = 0\)), can be positive or negativeac50
- the concentration inducing 50% of the maximal predicted response
All of these details are provided for other models, except for the
constant model. The constant model only includes the
success
, aic
, rme
, and
er
elements.
The hidden code chunk below shows how to view the structure of fit output for a particular model of interest, we use the Hill model here for demonstration purposes.
# structure of the model fit list - hill model results
str(model_fits[[1]][["hill"]])
#> List of 17
#> $ success: int 1
#> $ aic : num 3931
#> $ cov : int 1
#> $ rme : num 5.4
#> $ modl : num [1:675] 2.84e+01 1.96e-03 1.22e+01 1.87e-05 2.04e-01 ...
#> $ tp : num 28.5
#> $ ga : num 1.15
#> $ p : num 2.02
#> $ er : num 1.07
#> $ tp_sd : num 0.386
#> $ ga_sd : num 0.0591
#> $ p_sd : num 0.133
#> $ er_sd : num 0.0425
#> $ pars : chr [1:4] "tp" "ga" "p" "er"
#> $ sds : chr [1:4] "tp_sd" "ga_sd" "p_sd" "er_sd"
#> $ top : num 28.5
#> $ ac50 : num 1.15
Here we display all model fits for each of the spid
’s
included in the analysis above, these plots are generated with
plot_allcurves
.
Figure 2: Example plots generated from
plot_allcurves
. Each plot depicts all model fits for a
given sample (i.e. concentration-response series). In the plots,
observed values are represented by the open circles and each model fit
to the data is represented with a different color and line type.
Concentrations (x-axis) are displayed in \(\mathbf{log_{10}}\) units.
When running the fitting and hitcalling functions sequentially, one
can save the resulting rows from tcplhit2_core
in a data
frame structure and export it for further analysis (e.g. in the above
code, all results are saved to the result_table
object).
The result_table
is shown below.
dtxsid | casrn | name | assay | n_gt_cutoff | cutoff | fit_method | top_over_cutoff | rmse | a | b | tp | p | q | ga | la | er | bmr | bmdl | bmdu | caikwt | mll | hitcall | ac50 | ac50_loss | top | ac5 | ac10 | ac20 | acc | ac1sd | bmd | conc | resp | errfun |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DTXSID7020182 | 80-05-7 | Bisphenol A | TOX21_ERa_BLA_Agonist_ratio | 345 | 2.07675760930659 | gnls | 14.5612616778209 | 3.97590846996694 | 30.3852997962384 | 1.7442883598666 | 7.99895806109119 | 1.35752871016292 | 78.4938295140542 | 0.848864787792823 | 2.50607543243183 | 0.321427460212351 | 0.361914898671954 | 0 | -1773.71314844362 | 1 | 1.35011652816046 | 78.5711218511679 | 30.2402109905191 | 0.250256677572954 | 0.384023933794293 | 0.611081933080714 | 0.303614381195542 | 0.283565605079901 | 0.341124771496919 | 29.9999999999998|0.01|1|0.001|0.1|0.01|19.9999999999999|0.600000000000001|19.9999999999999|0.00199999999999999|7|0.3|0.3|7|0.001|1|0.1|79.9999999999993|0.1|0.0199999999999999|3|0.001|7|0.00199999999999999|0.3|0.3|0.1|0.1|29.9999999999998|3|3|0.600000000000001|0.0599999999999995|0.0599999999999995|1|1|0.01|0.00500000000000001|0.0199999999999999|0.600000000000001|19.9999999999999|0.00500000000000001|0.00199999999999999|19.9999999999999|0.00500000000000001|0.600000000000001|79.9999999999993|29.9999999999998|0.00500000000000001|7|0.01|7|0.001|1|0.1|0.1|3|29.9999999999998|0.1|0.0599999999999995|29.9999999999998|0.0599999999999995|0.01|1|1|3|0.001|0.1|0.1|0.0599999999999995|0.0500000000000001|19.9999999999999|1|1|0.01|0.0199999999999999|0.0199999999999999|0.600000000000001|0.600000000000001|0.00500000000000001|0.00199999999999999|0.01|0.3|7|0.00199999999999999|0.001|7|0.00199999999999999|0.3|29.9999999999998|19.9999999999999|0.00199999999999999|0.01|79.9999999999993|3|0.0599999999999995|79.9999999999993|3|0.00500000000000001|3|29.9999999999998|0.1|0.0599999999999995|29.9999999999998|0.01|0.0199999999999999|3|19.9999999999999|0.0599999999999995|1|19.9999999999999|0.0599999999999995|0.0199999999999999|0.00199999999999999|19.9999999999999|3|0.00500000000000001|0.3|0.01|0.3|0.001|0.00500000000000001|7|19.9999999999999|0.0199999999999999|0.00500000000000001|0.600000000000001|0.600000000000001|1|79.9999999999993|0.0599999999999995|29.9999999999998|0.0199999999999999|0.0199999999999999|0.001|0.0199999999999999|1|0.00199999999999999|7|0.00500000000000001|0.1|79.9999999999993|0.00199999999999999|0.00199999999999999|1|7|0.600000000000001|0.600000000000001|0.00500000000000001|0.01|0.01|0.001|0.00199999999999999|0.0599999999999995|0.600000000000001|0.01|0.3|0.3|0.00199999999999999|0.001|3|79.9999999999993|1|0.0199999999999999|0.3|0.00500000000000001|0.1|3|0.001|79.9999999999993|0.00199999999999999|19.9999999999999|0.1|19.9999999999999|7|0.001|0.00500000000000001|29.9999999999998|0.01|0.0199999999999999|3|1|0.00199999999999999|1|19.9999999999999|0.0599999999999995|0.0199999999999999|19.9999999999999|0.00500000000000001|79.9999999999993|0.600000000000001|7|0.0199999999999999|0.600000000000001|7|0.3|0.01|0.001|7|1|0.00199999999999999|0.1|0.00500000000000001|0.1|19.9999999999999|0.00199999999999999|0.00199999999999999|7|0.01|0.00199999999999999|0.3|0.3|0.600000000000001|3|0.0199999999999999|19.9999999999999|0.01|0.01|0.0599999999999995|0.01|0.600000000000001|0.001|3|0.00199999999999999|0.0599999999999995|29.9999999999998|0.001|0.001|0.600000000000001|3|0.3|0.3|0.00199999999999999|0.00500000000000001|0.00500000000000001|79.9999999999993|0.001|0.0199999999999999|0.3|0.00500000000000001|0.1|0.1|0.001|79.9999999999993|1|29.9999999999998|0.600000000000001|29.9999999999998|0.1|0.00199999999999999|0.0599999999999995|1|79.9999999999993|29.9999999999998|0.001|7|0.0599999999999995|7|1|79.9999999999993|3|19.9999999999999|0.00500000000000001|79.9999999999993|0.600000000000001|0.600000000000001|0.001|0.600000000000001|7|0.01|0.01|7|0.00199999999999999|3|0.3|0.00199999999999999|0.001|0.01|0.0199999999999999|0.3|0.600000000000001|1|3|0.1|19.9999999999999|0.00500000000000001|0.0599999999999995|3|0.600000000000001|0.001|0.0500000000000001|0.00199999999999999|0.0599999999999995|7|0.001|0.001|3|0.00500000000000001|0.001|0.1|0.1|0.3|29.9999999999998|0.01|7|0.00500000000000001|0.00500000000000001|0.0199999999999999|0.00500000000000001|0.3|79.9999999999993|0.01|0.001|0.0199999999999999|19.9999999999999|79.9999999999993|3|0.3|1|0.1|0.1|0.001|79.9999999999993|0.00199999999999999|29.9999999999998|29.9999999999998|29.9999999999998|0.1|79.9999999999993|0.0599999999999995|0.0599999999999995|79.9999999999993|29.9999999999998|0.600000000000001|19.9999999999999|0.3|19.9999999999999|0.0599999999999995|0.600000000000001|3|0.0199999999999999|3|0.01|29.9999999999998|1|7|0.00199999999999999|3|0.3|0.00199999999999999|0.0199999999999999|0.3|1|0.00500000000000001|0.00500000000000001|3|0.001|0.01|29.9999999999998|0.001|3|0.00500000000000001|0.001|0.1|0.01|0.600000000000001|29.9999999999998|0.0500000000000001|7|3|0.0199999999999999|1|0.3|29.9999999999998|0.01|0.001|0.0199999999999999|3|79.9999999999993|3|1|0.00199999999999999|79.9999999999993|0.0599999999999995|0.0599999999999995|0.1|19.9999999999999|0.00500000000000001|1|79.9999999999993|0.00199999999999999|0.01|79.9999999999993|0.1|29.9999999999998|0.00500000000000001|29.9999999999998|0.01|7|3|0.600000000000001|0.1|0.600000000000001|0.0599999999999995|0.0599999999999995|79.9999999999993|1|0.001|19.9999999999999|19.9999999999999|19.9999999999999|0.0599999999999995|29.9999999999998|0.0199999999999999|0.0199999999999999|3|19.9999999999999|0.3|7|0.1|7|0.0199999999999999|0.3|1|29.9999999999998|1|0.00500000000000001|79.9999999999993|79.9999999999993|3|0.001|0.01|29.9999999999998|0.001|0.3|0.1|0.600000000000001|0.00199999999999999|3|1|29.9999999999998|0.00500000000000001|19.9999999999999|0.600000000000001|1|0.00199999999999999|79.9999999999993|0.0599999999999995|0.00500000000000001|0.3|19.9999999999999|0.0199999999999999|1|79.9999999999993|0.01|0.600000000000001|0.1|19.9999999999999|0.00500000000000001|29.9999999999998|0.01|1|3|0.600000000000001|0.600000000000001|0.001|29.9999999999998|0.0199999999999999|0.0199999999999999|0.0599999999999995|7|0.00199999999999999|0.0599999999999995|1|0.001|0.00500000000000001|29.9999999999998|0.0599999999999995|19.9999999999999|0.00199999999999999|19.9999999999999|0.00500000000000001|3|0.600000000000001|0.3|0.0599999999999995|0.3|0.0199999999999999|0.0199999999999999|3|29.9999999999998|0.00199999999999999|7|7|7|0.0199999999999999|79.9999999999993|0.01|79.9999999999993|0.600000000000001|7|0.1|3|79.9999999999993|1|0.01|0.1|0.600000000000001|19.9999999999999|0.600000000000001|0.00199999999999999|29.9999999999998|29.9999999999998|1|29.9999999999998|0.00500000000000001|19.9999999999999|0.600000000000001|0.1|0.0599999999999995|0.3|0.001|79.9999999999993|0.600000000000001|19.9999999999999|0.00199999999999999|7|0.3|0.600000000000001|0.001|29.9999999999998|0.0199999999999999|0.00199999999999999|0.1|7|0.01|0.0599999999999995|1|0.00500000000000001|0.3|0.0599999999999995|7|0.00199999999999999|19.9999999999999|0.00500000000000001|0.600000000000001|0.600000000000001|0.3|0.3|0.3|0.00199999999999999|19.9999999999999|79.9999999999993|29.9999999999998|0.0199999999999999|1|0.001|0.0199999999999999|29.9999999999998|19.9999999999999|79.9999999999993|79.9999999999993|0.0199999999999999|7|0.001|7|0.00199999999999999|1|0.3|0.1|0.0199999999999999|0.1|0.01|79.9999999999993|0.600000000000001|19.9999999999999|0.001|3|3|1|0.01|29.9999999999998|0.00500000000000001|19.9999999999999|0.3|1|0.0500000000000001|1|29.9999999999998|0.01|0.00500000000000001|0.0599999999999995|0.3|79.9999999999993|0.3|0.001|19.9999999999999|0.0500000000000001|0.0199999999999999|0.1|0.0199999999999999|1|0.3|79.9999999999993|19.9999999999999|79.9999999999993|0.001|0.0599999999999995|1|0.00500000000000001|0.0199999999999999|29.9999999999998|0.1|0.001|7|0.01|19.9999999999999|79.9999999999993|0.600000000000001|79.9999999999993|0.01|19.9999999999999|7|0.0500000000000001|0.00500000000000001|0.01|0.3|7|19.9999999999999|0.00199999999999999|7|0.1|3|0.0199999999999999|0.1|7|0.1|0.0199999999999999|7|79.9999999999993|79.9999999999993|0.0599999999999995|79.9999999999993|29.9999999999998|0.1|29.9999999999998|7|0.01|0.0199999999999999|0.0199999999999999|0.600000000000001|0.00199999999999999|0.01|19.9999999999999|0.00199999999999999|0.0599999999999995|3|0.00500000000000001|79.9999999999993|0.01|0.3|29.9999999999998|0.00500000000000001|7|3|0.0199999999999999|0.00199999999999999|0.00500000000000001|0.1|3|7|0.001|3|0.0599999999999995|0.600000000000001 | 36.3584083222|0.3244335636|9.0799288262|1.4104483892|0.5884601547|-0.5267253916|33.5166615689|1.1531213197|33.3887769276|-0.0783435925|26.5103470042|11.5038494214|5.8497881488|26.6108849389|0.6347757629|8.9401949407|0.4721944486|13.0843582634|0.2032161159|-1.6362048607|18.5981101665|-0.6691270858|21.8031377875|0.0260044207|5.5970212493|1.7207924179|0.5262647076|3.2742596289|29.648058096|25.0745049059|15.6616900496|10.0362974603|0.0464037122|0.4375770951|5.6028419188|5.075946972|0.8246052361|-0.0775345932|-0.0250673323|4.6425618357|30.814966715|0.3502928593|-0.049125565|33.7317446429|1.1625323886|0.7608759196|13.3731451758|27.232075536|-0.3546139477|33.9542826793|-0.0497017892|30.6239848609|-0.8039385532|14.8352022941|8.922757155|0.8755132842|17.7441294106|30.6848084814|-0.3401339011|0.0561052961|31.3830046493|-0.1943634596|-0.9956978192|8.909514794|7.796017516|20.9960346449|-0.0872327631|2.4812045489|-0.7247686447|0.0567304729|2.7131174798|30.9357606204|22.1638573503|3.8581395341|0.2352043205|1.3962414717|1.443494669|0.7232840229|2.7671278609|-0.4794149783|1.0361328077|0.3608597621|1.3854902865|28.6668909721|-1.2429438331|0.3090573123|33.60068226|-0.7859697704|-0.05843606|28.0714315171|29.1379922428|-1.2540873278|-1.4602081846|10.1761739206|21.0159214246|0.5878087515|13.7806937709|25.0709060584|0.2631867529|23.7795811269|38.7457028384|2.5593796401|2.1341337859|45.8690780636|1.1433944172|0.6450549054|23.4762831627|33.7753267632|0.5035780545|3.1022813408|31.0932359206|-0.6154442334|0.377183899|-1.4001459456|41.3256717694|24.1993851283|0.2773247559|-0.037972455|0.3842831461|1.0747037254|1.7594671677|0.3176504072|31.3364057067|28.3869729364|-1.0916475626|0.9330193145|0.5606021348|-0.0143427045|8.629874698|10.7772238936|0.9449033933|30.4269838017|0.4933059726|1.4047095787|-0.7862497921|-0.1076555023|7.4738540879|1.4686786529|23.5506603522|0.7666351303|0.8899350684|4.3967893648|-0.4886715103|0.4054192473|16.4180034964|27.6356768343|17.4583774396|-0.1293645743|0.8496590932|0.1879921279|0.0385208012|-1.934520464|0.0801747522|0.6342980898|6.5491207926|0.1101995836|-0.0006233218|0.070118032|0.0674399784|-0.0310408558|21.0718702397|26.4955066765|21.2081863071|0.98016575|2.1347339814|-1.2950936007|-1.0827106783|17.3729124361|-0.7183526972|15.7598666823|-1.5858480826|31.0618785463|2.2383537306|29.8664833918|23.6663154598|-0.857620724|-0.5636438714|23.8345076648|2.8672836161|-0.4017482984|24.6579439171|15.8784619518|0.1405557357|12.272851557|37.3278082874|1.2687592017|3.0955426141|50.6960754454|-0.1210490921|11.6957344353|3.6711023323|32.1353492303|0.2809874139|0.2852095408|27.2447592162|0.4795828468|0.6859394274|-1.3000860962|40.8604104202|7.9018857832|0.2585202599|-0.0014574143|0.6815446307|-0.1945080091|24.4829039345|-0.4473417039|4.4304453028|28.5839653737|-0.0622997508|-1.4839588768|0.7264817366|0.6684719016|2.1201285094|24.8102594831|1.1477225839|29.5689314863|-0.7106242517|1.0023075952|5.7134653405|-0.0122443981|1.1853674306|-0.6052750501|18.3876243085|-0.3958000391|-0.0334652315|21.7607980449|-0.4959172266|0.0920931455|8.1269715172|18.8507810425|19.1704137795|1.9223607683|-0.64373414|1.1664360959|-0.8550531479|23.7694081476|-0.7167983696|-0.017248519|3.8911079828|0.4150398825|-1.4902941046|2.5378501998|1.805784976|10.4318686563|11.7121344628|39.3436380555|13.1135432965|29.4774982791|0.6409054935|-0.2222222222|-0.3754895429|1.9595454784|11.3512731538|29.5780886138|-1.3450638832|31.4705190986|-1.0612779546|27.4663835837|17.2612116723|3.3242003856|25.2543661966|31.5762624622|-1.1683732244|13.8328033815|4.1221422424|9.2060615849|-1.2331552558|4.8458130375|35.5639247026|-0.1325301205|3.5514094402|49.4313988026|-0.7206094542|24.8916723086|2.1362016757|-0.881973422|0.0625782228|0.4538981843|-0.1375631311|-1.5085591865|0.4578634707|18.6575600147|23.8837010236|0.7574527168|29.1905783048|-0.0174755191|-10.0888822|37.9352285525|2.5266708687|0.8946794204|0.3887040481|1.1563617323|0.9534971614|30.1536162894|-0.3757770292|3.0114920454|18.2886898196|-0.0627915321|0.1002631908|1.4518971076|0.2560235978|0.0863345861|30.2151983736|-0.7446875957|31.6539329915|0.0007075404|-0.2287581699|4.0623070133|-1.700885419|-0.0194803095|20.0123437574|-0.0707473908|-0.5524145808|0.0902832637|27.9909137408|18.1691873197|27.4676611529|2.9995685388|8.0617373996|1.208658097|-0.291511194|0.5234834789|16.1262945224|-0.0788376801|33.6489262197|36.2327232919|28.6594675127|0.1742874717|13.0371434647|-1.2723958878|-0.6852831019|11.5138382473|33.0189275275|1.0817681022|38.6978748848|1.3717615169|27.1456859371|0|-3.0210420467|25.763580245|2.0531358763|25.9479723344|0.9029124014|27.9174703903|10.5275531448|27.2830494541|-0.2570379437|25.5404225584|1.209914872|1.8865081636|0.1088246933|1.4632111179|16.9725420548|0.0888550393|2.407250067|45.0589098358|-1.4779263445|0.0363666373|23.1889647915|-2.3097395079|19.8465081304|-0.0493259508|1.0553345126|0|0.0372763419|7.2191875009|33.2965129926|-1.0049881925|27.7925406214|26.5535014137|-1.7110348951|27.6440043993|2.3538559592|26.6871251645|-1.4864923419|1.2481068236|-0.0112854079|30.3601428|12.9086716003|27.3259788089|22.7650804551|0.2766228965|20.5163388918|0.3219838297|-0.702320523|-0.7518195436|30.7772231056|-0.4664282708|17.5757188859|11.4067054084|0.675104222|1.0360381627|6.9154864808|1.3701954236|36.0595389074|0.3152387902|30.1191218478|0.6364139177|26.6240294686|21.042413831|4.6699139881|-0.4947328782|1.7256114493|0.4931006634|-1.6812784403|11.1068704963|19.6650896119|-0.7130563793|32.8182345564|31.0339078047|27.8272561087|-0.067346546|31.2841488663|-0.9215466263|1.0962281117|15.4353838184|31.4689221113|0.1346437701|27.9015222811|-1.4990611861|28.9081476923|1.4117508944|-1.195531652|20.8073108043|31.1956531534|17.4357381136|0.4954241085|12.6967614485|14.7809622475|20.0901900942|1.3166771184|0.1231527093|30.1231885027|0.644234121|0.0484493402|-0.7397343103|6.087939775|0.9239944209|29.1312867898|36.4874876672|21.640182645|-0.5584373752|25.0970055972|2.6563123826|18.3275589041|0.3630093474|21.7985856112|-2.393721406|0.6227824618|3.3119202291|31.5999124948|0.1700487473|11.178949827|21.119813334|-2.5129711469|12.0696853627|-0.6900380195|26.6687464761|-0.126916801|21.9626887762|1.0472569197|23.9628139246|22.8062400851|3.4073601846|14.8451610606|-0.79412544|33.3080244443|0.6163431479|-0.5647685691|-0.4863174442|27.3571291851|-2.6067356874|0.3002643397|16.3833392279|1.362485485|0.3362374245|28.5781129191|-1.2749394238|21.9307380255|0|28.6607036455|5.1759193593|26.1106576034|1.0774408972|1.0584100062|-0.9525858006|0.1928977276|0.0025975742|-1.5146728856|19.6324449459|28.0738548533|2.3503826021|26.1507598989|27.7921414184|25.8477554847|-0.0960512272|9.9937760353|-1.7745446684|25.8205185004|3.2025132235|28.7181711898|0.1044795612|24.6645640358|15.7501014284|19.9143941287|-0.4776101983|-2.1890722794|16.9923014022|28.0647062906|7.132845259|0.8319447593|29.4229015604|34.5194666454|6.6055593439|33.6671087395|-0.3029647263|33.6377693589|8.9670707509|-0.9457740258|1.9990947062|0.3381994444|-0.7306559632|14.4177089039|15.9025656985|26.0142896539|1.1666475059|30.9516494443|1.4292137019|10.7469192585|-0.0899532284|29.0393450764|-1.9135337079|0.0864958374|0.3793182016|27.7080399683|-0.8494437774|0.0392156862|16.7837156732|0.7727807174|5.5247411219|1.7537053088|34.4724067039|-0.1516361734|22.7812042833|-0.7939877246|14.5551535285|9.2566790607|2.1299764007|6.6560166911|4.8878072316|-1.7850027184|32.6272177351|21.4826218528|29.0166166884|-0.8288759159|12.6958599863|-1.0689289502|-1.0854722559|28.9005526598|20.6118456611|16.3300722791|15.3260687158|0.3616111887|29.2862196808|1.2019694831|21.6368669454|0.4243308451|19.0181542556|0.2349493014|1.1448680756|-0.6203413369|-0.7930522211|-2.4789130011|16.9448659212|5.9842821545|30.4045736521|2.1022852979|21.4496249497|19.2390770377|16.1757078223|-0.1029018316|21.0481056165|0|28.2517900863|0.5499749004|16.4503283619|-0.1164011964|11.1548486687|28.5982238554|-1.4782364915|0.0635958978|-0.582283855|6.948308712|17.9342547842|1.3474782012|1.5624918656|30.0561940599|-0.2406612954|-0.0051128605|0.075513056|0.2319528112|14.7669216069|3.7130740116|13.7060312779|31.6677898037|16.6088103415|0.2569915456|0.5829217348|18.9504756619|1.1127623036|-0.3782698622|35.7192619463|1.9127375825|-0.0562050359|32.0508702519|-0.857403836|31.9656955086|14.0540290864|4.7139103528|9.4879664196|-0.2592597318|33.2796393017|30.1816141643|-0.7034513498|-0.3972830962|0.1588465298|1.6806831395|29.3727617225|27.8995875543|-0.3903939113|27.7971867571|1.3503856127|27.9958331061|0.1857111645|5.536391242|23.5763415397|1.6193610959|-0.0281888653|29.5613809098|11.87206497|9.3955129293|-0.0627431296|15.1002386688|35.9679482436|-0.9565008411|37.5854715792|28.6534716812|0.677276727|0.7230061106|1.4667812664|7.6289832227|-0.2923343438|-0.338452923|34.9376544404|0.2362195034|-0.1433178072|17.5393388629|-0.6771807121|17.4161388443|0.6405047473|1.4675432815|27.8266522081|0.3126409378|29.3377570488|29.6361309408|0.3627761566|-2.0204419625|0.0749855029|0.0877449546|27.6825865132|26.1816429489|-0.7584601345|25.4637770563|-0.047251681|9.9038516901 | dt4 | ||
DTXSID0032520 | 131860-33-8 | Azoxystrobin | TOX21_ERa_BLA_Agonist_ratio | 114 | 2.07675760930659 | poly2 | 0.903739345206559 | 2.48239387351695 | -7.51990839646214 | -75.0806174959512 | 0.174902038421783 | 2.50607543243183 | 1.15799379286268e-09 | -1275.75754581165 | 0.017635886742006 | 10.973216744123 | 1.87684756198748 | 0.948938992825454 | 1.9231513624837 | 3.95624973849214 | 33.4564080982682 | 94.8804125887033 | 3|0.0299999999999998|7|0.0599999999999995|0.001|0.0199999999999999|0.3|0.0599999999999995|0.00500000000000001|79.9999999999993|3|0.1|0.600000000000001|0.00199999999999999|3|0.00500000000000001|39.9999999999998|0.1|0.00500000000000001|0.3|19.9999999999999|0.0199999999999999|1|79.9999999999993|0.00199999999999999|0.0599999999999995|0.0599999999999995|0.00199999999999999|1|7|0.00199999999999999|0.0299999999999998|3|39.9999999999998|0.00199999999999999|79.9999999999993|3|0.600000000000001|7|1|39.9999999999998|1|0.0299999999999998|19.9999999999999|0.3|0.1|0.0299999999999998|0.00199999999999999|29.9999999999998|1|0.0599999999999995|0.3|0.001|79.9999999999993|79.9999999999993|19.9999999999999|0.0599999999999995|0.00199999999999999|0.1|7|0.01|0.0599999999999995|1|0.001|0.0299999999999998|0.0299999999999998|0.001|39.9999999999998|3|0.001|79.9999999999993|0.600000000000001|19.9999999999999|0.001|39.9999999999998|19.9999999999999|0.3|1|0.600000000000001|19.9999999999999|0.600000000000001|0.01|7|1|39.9999999999998|7|0.1|0.01|0.1|0.0599999999999995|0.01|0.001|19.9999999999999|79.9999999999993|19.9999999999999|0.00199999999999999|7|0.3|0.600000000000001|0.0299999999999998|0.1|0.0299999999999998|1|1|0.001|0.0299999999999998|19.9999999999999|19.9999999999999|0.001|0.00500000000000001|1|0.00199999999999999|0.1|39.9999999999998|7|0.0299999999999998|0.001|0.0599999999999995|1|0.00500000000000001|0.0299999999999998|39.9999999999998|0.3|0.01|7|0.001|7|0.00199999999999999|0.3|0.3|0.1|0.1|3|0.001|79.9999999999993|79.9999999999993|19.9999999999999|0.0299999999999998|0.3|3|0.600000000000001|0.0599999999999995|1|79.9999999999993|0.01|0.3|7|0.01|0.1|0.0599999999999995|0.01|0.00500000000000001|0.600000000000001|19.9999999999999|7|0.1|3|0.3|79.9999999999993|0.3|0.00500000000000001|3|0.600000000000001|19.9999999999999|3|39.9999999999998|0.00500000000000001|0.0500000000000001|0.0299999999999998|0.00500000000000001|0.0299999999999998|7|39.9999999999998|7|0.001|1|0.1|0.3|79.9999999999993|0.0599999999999995|79.9999999999993|39.9999999999998|79.9999999999993|0.00199999999999999|0.01|7|7|39.9999999999998|0.00199999999999999|0.1|0.001|0.0599999999999995|79.9999999999993|3|0.01|0.0199999999999999|0.0299999999999998|0.600000000000001|0.00199999999999999|0.01|19.9999999999999|0.1|0.00500000000000001|3|1|3|0.001|0.1|0.1|0.0599999999999995|0.0500000000000001|1|79.9999999999993|0.01|39.9999999999998|7|0.01|0.1|1|0.01|0.0299999999999998|0.600000000000001|39.9999999999998|0.00500000000000001|0.1|3|0.00500000000000001|0.0599999999999995|0.0299999999999998|0.00500000000000001|0.00199999999999999|0.3|7|3|0.0599999999999995|0.600000000000001|0.1|7|0.1|0.00199999999999999|1|0.01|7|1|19.9999999999999|0.00199999999999999|0.00199999999999999|79.9999999999993|0.00199999999999999|79.9999999999993|3|79.9999999999993|3|39.9999999999998|0.1|0.0599999999999995|0.1|0.1|3|0.01|1|0.0299999999999998|0.0299999999999998|3|0.3|19.9999999999999|39.9999999999998|0.001|0.00500000000000001|3|3|19.9999999999999|0.001|0.0599999999999995|79.9999999999993|0.0299999999999998|29.9999999999998|1|0.00500000000000001|0.3|0.01|0.3|0.001|0.00500000000000001|7|0.0500000000000001|0.00199999999999999|1|0.600000000000001|1|79.9999999999993|0.0599999999999995|39.9999999999998|0.0299999999999998|0.0199999999999999|0.600000000000001|39.9999999999998|0.00500000000000001|79.9999999999993|0.00199999999999999|0.00500000000000001|0.0599999999999995|0.600000000000001|0.00500000000000001|0.01|0.3|19.9999999999999|0.00199999999999999|0.0599999999999995|0.600000000000001|79.9999999999993|0.0299999999999998|39.9999999999998|0.00199999999999999|0.001|79.9999999999993|3|0.0599999999999995|0.001|0.600000000000001|0.00500000000000001|3|0.600000000000001|7|0.001|0.001|0.01|0.001|3|1|29.9999999999998|1|19.9999999999999|0.0599999999999995|0.0299999999999998|0.0599999999999995|0.0500000000000001|1|0.00500000000000001|0.600000000000001|79.9999999999993|39.9999999999998|0.600000000000001|0.1|7|19.9999999999999|0.0599999999999995|0.00199999999999999|1|1|7|79.9999999999993|0.3|39.9999999999998|0.01|19.9999999999999|0.600000000000001|0.00199999999999999|0.1|0.00500000000000001|0.1|19.9999999999999|0.00199999999999999|0.00199999999999999|0.0199999999999999|0.001|0.600000000000001|0.3|0.600000000000001|3|0.0299999999999998|19.9999999999999|0.01|0.01|0.3|19.9999999999999|0.00199999999999999|29.9999999999998|0.001|79.9999999999993|0.0299999999999998|0.3|0.00199999999999999|0.00500000000000001|0.1|7|0.001|0.0299999999999998|0.3|39.9999999999998|0.01|19.9999999999999|0.001|79.9999999999993|29.9999999999998|0.01|0.0299999999999998|79.9999999999993|0.3|0.00199999999999999|1|0.3|1|79.9999999999993|0.0599999999999995|0.00500000000000001|79.9999999999993|0.600000000000001|0.600000000000001|19.9999999999999|0.600000000000001|7|0.01|0.01|0.0299999999999998|0.0199999999999999|0.600000000000001|0.00199999999999999|0.3|3|19.9999999999999|0.3|0.0599999999999995|0.00199999999999999|7|0.0299999999999998|0.001|0.600000000000001|0.600000000000001|1|3|0.1|19.9999999999999|0.00500000000000001|7|0.3|0.001|0.0500000000000001|0.00199999999999999|0.0599999999999995|7|0.001|0.001|0.01|19.9999999999999|0.3|0.1|0.3|39.9999999999998|0.01|7|0.00500000000000001|0.00500000000000001|0.1|7|0.001|19.9999999999999|3|39.9999999999998|0.01|0.1|0.001|79.9999999999993|0.00199999999999999|3|1|39.9999999999998|0.1|19.9999999999999|0.00500000000000001|79.9999999999993|79.9999999999993|39.9999999999998|19.9999999999999|0.00500000000000001|79.9999999999993|3|0.1|0.001|0.600000000000001|0.1|0.01|39.9999999999998|0.0299999999999998|0.00199999999999999|3|0.3|0.00199999999999999|7|0.3|1|0.00500000000000001|0.00500000000000001|0.01|0.01|0.3|0.001|0.1|0.01|7|39.9999999999998|0.0299999999999998|0.001|0.01|79.9999999999993|0.3|0.01|0.600000000000001|39.9999999999998|0.0500000000000001|7|3|3|0.1|79.9999999999993|0.01|0.001|0.0299999999999998|3|79.9999999999993|3|0.00500000000000001|7|0.1|0.0599999999999995|0.1|19.9999999999999|0.00500000000000001|1|79.9999999999993|0.00199999999999999|0.00199999999999999|3|39.9999999999998|7|0.600000000000001|19.9999999999999|0.00500000000000001|0.0599999999999995|79.9999999999993|1|0.001|1|0.600000000000001|19.9999999999999|0.0599999999999995|7|0.00199999999999999|7|3|19.9999999999999|7|0.00199999999999999|39.9999999999998|0.600000000000001|0.0599999999999995|0.01|0.001|0.01|39.9999999999998|0.001|0.00500000000000001|0.00500000000000001|0.1|79.9999999999993|79.9999999999993|0.00500000000000001|1|19.9999999999999|0.01|0.600000000000001|1|0.0599999999999995|39.9999999999998|0.00500000000000001|39.9999999999998|0.01|1|3|0.600000000000001|0.001|1|19.9999999999999|3|0.3|0.0599999999999995|0.600000000000001|0.3|7|0.0299999999999998|3|0.001|19.9999999999999|0.3|0.0299999999999998|0.00500000000000001|39.9999999999998|0.00500000000000001|19.9999999999999|0.600000000000001|3|0.00199999999999999|0.0599999999999995|39.9999999999998|29.9999999999998|0.00199999999999999|0.01|7|0.00500000000000001|0.3|0.600000000000001|0.0299999999999998|19.9999999999999|0.00199999999999999|19.9999999999999|0.00500000000000001|0.600000000000001|0.600000000000001|0.3|0.3|0.0599999999999995|0.600000000000001|7|1|0.1|0.0299999999999998|0.3|0.1|1|0.01 | 1.005671553|-0.265174683|2.390873579|-0.1699346404|-0.5953554927|0.0296794618|2.4335855607|-0.8772938577|-0.0779972339|-2.5907076445|-0.5968586396|0.8823482226|-0.8619557246|-1.4580519329|-0.1714005877|-0.7017358373|-3.4273785288|-0.829649523|0.3855532255|-0.4520456868|0.6146728578|2.0371240231|0.0307525073|-0.0720275825|0.5865774179|-0.448371357|-0.2235885845|-0.1635896542|-0.5132884554|-2.0037423123|-0.4828740338|1.1760164534|2.7314008947|14.0971828786|-0.4777559602|-5.317935441|2.83599101|0|3.1784119502|-0.7961630841|8.5580753553|-1.3553280909|-0.8008340274|-1.0526113911|0.0421451901|-1.0133834187|0.0112854079|-0.1282873636|-2.7685148525|-0.5679745186|0.2283677918|-0.7819666434|-0.4231311707|-1.272883937|6.1204321414|-2.9166046797|-0.8576804936|0.0885433183|-0.6327859508|0.0357185379|0|-0.3703893645|-0.1551912985|0.6280335591|0.1758793969|-0.8981490674|-0.5124642477|-0.6817541323|-2.1907702953|-1.3917899447|4.5461554226|-0.1651651652|14.1177071079|-0.9772701984|-4.6758995568|0.2358446762|-0.4465364284|0.124214914|-0.2337506232|12.0789994715|-0.9231825741|-0.1870557426|-2.5890273527|-0.1766784451|14.6987086767|0.2331276187|-0.0844356191|-1.3243988703|0.0934191405|0.2303852553|-0.3129534693|0.5207867412|-0.2714477424|-2.7076728971|19.1298013451|1.0419174549|4.1198844287|1.4455691227|0.2834410359|0.057369862|-0.1838428259|-0.0281888653|-0.0866050807|-0.3630543127|-0.6521733655|-0.2973587546|7.8966346036|0.4725371445|-0.3847030663|0.1208021261|0.1914580265|-0.1473766949|-0.4126786134|9.1252954631|-2.6943670891|-0.7147778621|0.0913991748|0.4151074174|0.0560415698|0.9453283257|-0.7389143558|6.8551620515|-0.1056803171|0.2046991811|4.707306175|0.0729749452|4.050462651|0.0551440134|0.3236245955|-0.1481944895|-0.8616777302|0.387508265|1.3804187143|-0.1343970143|2.1859455943|-1.7819302211|-0.9361380686|-0.6741100333|-0.7337151964|3.2689257198|1.0543270751|1.3531347562|-1.0374178989|2.0113827244|-1.3303639928|0.1704424478|7.3102598295|-0.3378051189|2.2016367776|-0.29512807|-0.3831417625|-0.8796409692|-5.8442834016|-2.686858002|1.0601419504|-1.2707087579|2.085665292|1.1525669333|7.8788131464|0.3635862117|-0.2948460904|-1.3971028017|-0.3422744489|12.1125778097|-0.1658767772|2.6197078227|0|0.9618294793|-0.1416805717|-0.0758958304|-0.0845665962|0.516228358|-1.645088253|9.0832265842|-0.0341958282|1.2846687426|-0.0764623423|-0.2933695108|2.2613038041|0.17873767|-0.3288909231|-0.3873882747|-1.3098823911|-0.3092718542|0.8951513414|5.3102101761|1.6828696964|0.432735816|-0.032331327|-0.3731343284|-0.1056067588|-0.465348777|-2.9744337754|-2.2635186581|0.1989353446|-0.8370329521|0.4088211714|-0.2118518015|1.1363210405|0.1933452949|7.1909262357|-0.3373105116|0.2511661283|4.4910430469|0.1360174102|6.1516430456|0.178913738|1.3111337111|-0.3388939925|-0.7489619889|-0.3060351208|-0.3050958512|0.7547538672|-0.3464028189|-1.2708461608|-0.8043221612|-1.3605917383|-0.9564464254|0.179559873|-0.5529107493|-0.2163665208|-0.5177386072|5.8342968488|-1.6982007693|-0.0292483181|-0.6342640139|-0.0425215265|2.4346287354|-0.4624783724|-0.3949100483|-0.6404225578|-1.2936718968|-3.4260226567|-1.29217811|-0.9223204084|0.1081297049|1.4940629896|9.2004687347|0.2100129938|0|-0.8004731847|-0.0577111715|6.1032243484|-1.3221817607|5.3556296824|-0.0989500444|-8.8024618099|1.645762465|-0.2567870125|0.9133002642|-1.227416462|-2.3265437202|4.4858973875|-0.0016164837|0.5591725125|2.1532150154|-0.7819015414|-0.903584665|-2.4541608461|-0.1981253043|-1.134838658|-0.3072427526|0.2413515688|0.059005753|0.7718453297|-0.2207433203|2.9107529961|0.0718268559|0.6189451022|0.7093141425|0.2249501521|2.840598947|0.1022364217|-0.0787838913|4.0180758899|-0.6950142389|-1.8057434292|-1.8452855573|0.5493970986|0.3397603666|-0.4460992622|-1.152995815|1.1714365313|-0.7866041266|4.386083633|-0.8875236782|-0.2228330621|-0.2169458841|0.4956298633|-0.8403909057|0.4714214896|-0.0169650507|3.6450351453|-1.4520642409|2.2683149048|-1.1483895313|4.0012701438|0.2220578034|-2.8392147313|0.0118595825|-0.5064030158|0.6703723632|1.3800074977|-0.5396226734|0.1658584948|0.539909999|8.0818469696|-0.7919814052|0.2709400018|-0.7182802147|-0.4265476581|0.5857798101|9.1754637853|-0.148426534|-0.0448543177|-0.6507630298|4.901129965|0.9457750522|0.0373924965|-0.7124714165|0.0394400475|2.6579317531|0.0433184674|1.5011063496|0.1927617921|-1.779258981|-0.2825388357|-0.301316219|1.5263074429|-1.1602188008|-1.4943551249|0.7634947848|1.0972804056|-0.6407980667|0.0287271178|-2.8735889768|1.0359833418|-0.4465458366|-0.9191295991|-0.7107112287|-2.2149819944|1.3495320758|-0.1816657349|1.0130859285|-1.0484026338|2.6776308137|-0.3417949737|-0.5717397223|-0.4323954184|0.5410868872|1.2850232387|-1.2235065923|1.2180749886|0.0752733224|-0.5258794156|-0.1734582303|-1.4065208668|-0.0494460948|0.5011470476|-0.1406110188|-0.3836887783|7.7249540574|-0.1666234751|0.8748074896|-0.0263539332|-0.0876075483|0.1207437817|-0.9389503309|-1.2175932385|-0.0360818257|0.0601903212|5.0054179476|-0.1337196345|-0.4505297564|-0.5831942937|4.957784962|0.1028149189|-4.0567154353|-0.5377001479|0.5156110277|0.8617318351|0.6493949173|0.1618559482|-0.3200176561|-0.0952948184|3.8251600324|-0.953586223|0.0806229784|-0.7609438077|-0.4730785675|2.0455082108|13.7578637931|-0.0694194876|-1.8567555402|1.0835179352|-0.4114591342|0.0699009093|0|-0.1244709982|0.5945502517|0.0816548721|-0.8624582289|0.1827639532|-1.4338811198|-0.0358294517|-0.7684329352|-1.9611934233|0.1349949104|0.3219652|0.2451063384|1.1890537532|1.2048517953|0.0485131342|-0.5175225499|-0.0109241861|1.2095984399|0.3587993349|-0.617622967|-0.704118628|-0.0172491752|2.8706987031|-1.2189601114|-0.2020396382|-1.2088744118|2.0449142311|0.0043149592|-0.1202145367|0.144892538|-1.1720829597|0.1088534107|0.5541972537|0.7767172085|3.2827229273|0.2603261047|0.5404646385|-0.4103120525|0.4351743757|-0.1437451129|-0.0975082853|-0.5325536537|6.9836551535|0.0935138416|-0.4697858796|-0.6989140314|-0.0457038391|-0.0078488424|-0.5715109487|-0.6248052553|0.129011748|0.1555889841|3.1738666694|-1.1666005202|-0.9676139626|0.0119118522|5.2658532329|-0.3873925137|-0.8551484547|0.2622122948|-0.0244397849|-1.1403494558|-1.009158992|0.6760059278|0.9091412873|0.4987153055|2.9502213573|0.1632208922|2.0034685724|-0.4930398191|0.4003380148|-0.1721165356|5.6553549975|0.1674277015|3.4546458489|2.1830101562|-0.8752563425|-1.7521481064|-0.0458492202|0.2093338259|-0.2391950753|0.1824817518|-0.6947465452|0.5799185112|-0.599540104|-0.8256980062|-1.0549937679|0.0710900473|0.1749672158|3.3062517555|-0.4411934244|-0.9317644916|-1.2581194595|0.0588362239|-0.9099556188|-0.1730921128|2.3220792472|-0.5084151473|1.4300779852|-3.0030807033|0.1803575978|2.3236912135|4.8664353551|1.2850199012|1.0486243122|-0.5136245487|-3.7264374151|-0.0118837013|0.2970312813|-1.4602285312|-0.7104215353|0.7202551114|3.6002995505|0.1224289912|-0.1391064766|-0.8147398812|-0.2802547771|0.1767825575|0.1407129456|-0.6000225599|5.4537592289|-0.4130657972|-0.0092222815|0.7067692608|2.1742387778|-0.0508970607|-0.1060045964|-1.2051608797|0.4904891266|-0.0718821133|0.0843525938|-0.813073654|0.2293882008|-0.2705776924|0.3517416912|10.1334199564|-0.4745185584|1.0788794976|-1.4030227784|1.6722902353|0.0294737036|1.1385814042|1.2195879148|-0.4345362888|0.7219140158|-0.2022932964|2.0014716895|-0.5553125401|1.6518751345|0.381768908|5.4569831144|1.7259629646|4.3969718228|2.0102688013|1.5192023597|-0.5413133554|0|-0.2169474221|-0.4383107323|-0.7874734212|0.0335871025|4.5289746646|-0.6883775157|-0.3058637031|0.8445858127|0.7156741473|0.7614088036|-1.2828257347|-0.3588434425|0.3879831519|5.147926041|0.0996523|-0.4699953252|-0.8569992791|-0.6732730136|2.2412842185|0.9980356102|8.6297350853|-0.5923642808|0.2014581397|1.9238265673|-0.7181356068|-0.96195737|1.134365506|10.6996461736|-0.7852757233|-0.0113571834|-0.7856639844|0.7005436947|-0.1608147949|2.392782156|-0.2338767885|0.9183028602|0|0.4994021711|-0.9306383374|-0.0764915859|-1.3165580308|11.9835100766|0.4726930183|8.6435433803|-1.6784669164|-0.067203475|1.702683786|0.5477515682|4.6522076678|-0.7112849216|0.0235801954|-0.8997632317|4.4040975696|0.0709076174|-0.2030295295|-0.3298556931|-0.154729124|6.4500323527|1.3695809145|9.5539957263|0.1812031892|-0.049194441|-0.1547168092|-0.1362862011|-0.3577653047|-10.1182298793|1.245481883|6.8896370151|-0.0403694374|-0.0792393026|-0.5903531416|0.8847848497|-0.1565167898|0.3002972856|0.018848792 | dt4 | |||||||||
DTXSID1021166 | 51-03-6 | Piperonyl butoxide | TOX21_ERa_BLA_Agonist_ratio | 47 | 2.07675760930659 | poly1 | 0.308576904555397 | 1.26083494016013 | 0.00801049293239624 | -0.272826931190623 | 2.50607543243183 | 0.000179677130957022 | -929.07730448006 | 0 | 39.9999999999997 | 0.640839434591694 | 0.3|0.0500000000000001|7|0.0199999999999999|29.9999999999998|0.01|1|0.01|0.3|0.0599999999999995|0.00500000000000001|0.01|3|0.600000000000001|0.0199999999999999|0.0199999999999999|0.600000000000001|0.00199999999999999|0.3|3|1|0.600000000000001|0.3|0.00199999999999999|7|0.001|0.00199999999999999|7|0.001|0.1|7|0.001|19.9999999999999|0.1|0.00199999999999999|3|1|7|0.600000000000001|0.1|0.01|1|0.01|19.9999999999999|0.00500000000000001|0.01|0.00500000000000001|0.1|0.0199999999999999|0.00199999999999999|0.00500000000000001|0.600000000000001|0.00199999999999999|0.01|0.01|0.3|0.001|0.1|0.01|0.1|0.3|0.1|0.001|3|79.9999999999993|0.001|3|0.600000000000001|0.00199999999999999|3|29.9999999999998|7|0.0599999999999995|0.001|1|0.600000000000001|1|0.3|0.0599999999999995|0.00500000000000001|0.01|0.00500000000000001|3|0.0199999999999999|0.1|3|0.001|7|0.00199999999999999|0.00500000000000001|0.00199999999999999|0.0599999999999995|0.0199999999999999|0.3|1|0.0199999999999999|79.9999999999993|0.01|0.001|0.00199999999999999|0.3|0.001|0.00199999999999999|3|79.9999999999993|0.1|3|0.600000000000001|3|0.01|19.9999999999999|3|0.00500000000000001|0.00500000000000001|0.1|79.9999999999993|79.9999999999993|0.00500000000000001|0.0599999999999995|0.1|0.0599999999999995|3|0.00500000000000001|29.9999999999998|0.1|0.00500000000000001|0.3|0.3|0.0199999999999999|7|0.00500000000000001|1|29.9999999999998|29.9999999999998|1|0.3|0.00199999999999999|0.0599999999999995|0.0599999999999995|0.00199999999999999|1|0.001|1|19.9999999999999|3|0.0199999999999999|7|0.00199999999999999|0.0199999999999999|79.9999999999993|29.9999999999998|0.0599999999999995|0.600000000000001|0.3|0.1|0.1|0.0199999999999999|0.00199999999999999|0.00500000000000001|0.00199999999999999|0.3|1|29.9999999999998|0.0599999999999995|0.600000000000001|19.9999999999999|3|0.001|0.00199999999999999|0.001|0.0199999999999999|0.3|0.1|0.600000000000001|0.01|29.9999999999998|0.00500000000000001|29.9999999999998|0.001|0.1|0.600000000000001|0.001|1|29.9999999999998|0.0599999999999995|19.9999999999999|0.3|0.600000000000001|0.00500000000000001|7|1|79.9999999999993|0.00199999999999999|0.0599999999999995|29.9999999999998|29.9999999999998|0.00199999999999999|0.01|29.9999999999998|0.0199999999999999|1|79.9999999999993|19.9999999999999|0.0599999999999995|0.00199999999999999|0.1|0.1|0.01|3|79.9999999999993|0.600000000000001|19.9999999999999|19.9999999999999|0.600000000000001|0.1|0.001|0.0199999999999999|0.0199999999999999|0.001|29.9999999999998|0.0599999999999995|0.600000000000001|7|1|0.01|3|0.001|79.9999999999993|3|19.9999999999999|0.0199999999999999|0.3|0.1|0.0599999999999995|0.0599999999999995|0.01|0.001|0.00199999999999999|0.001|0.1|0.600000000000001|19.9999999999999|0.0199999999999999|0.3|7|1|29.9999999999998|0.001|79.9999999999993|0.01|0.1|0.0599999999999995|0.3|0.00500000000000001|19.9999999999999|0.01|79.9999999999993|0.1|19.9999999999999|0.0599999999999995|79.9999999999993|0.01|29.9999999999998|0.0199999999999999|0.3|0.600000000000001|0.600000000000001|19.9999999999999|0.0199999999999999|7|0.1|0.3|0.00199999999999999|0.00199999999999999|79.9999999999993|29.9999999999998|0.001|0.0199999999999999|19.9999999999999|19.9999999999999|0.001|0.00500000000000001|19.9999999999999|0.01|0.600000000000001|29.9999999999998|7|0.0199999999999999|0.001|0.0599999999999995|0.0599999999999995|0.00500000000000001|0.600000000000001|29.9999999999998|0.3|7|7|0.3|0.0599999999999995|3|0.001|79.9999999999993|79.9999999999993|19.9999999999999|0.0199999999999999|0.3|3|0.600000000000001|0.00500000000000001|1|79.9999999999993|0.01|0.600000000000001|7|0.00500000000000001|1|0.001|79.9999999999993|0.0500000000000001|0.3|79.9999999999993|29.9999999999998|0.1|3|0.600000000000001|19.9999999999999|79.9999999999993|29.9999999999998|0.00500000000000001|0.0500000000000001|0.0199999999999999|0.1|0.00199999999999999|7|0.00500000000000001|29.9999999999998|0.0599999999999995|7|0.0199999999999999|3|0.00500000000000001|19.9999999999999|0.01|0.1|0.3|0.3|7|79.9999999999993|3|0.0599999999999995|29.9999999999998|0.001|0.001|29.9999999999998|19.9999999999999|0.00199999999999999|0.01|7|7|29.9999999999998|0.00199999999999999|7|0.00500000000000001|0.3|79.9999999999993|3|0.01|0.0199999999999999|0.0199999999999999|0.0199999999999999|0.00199999999999999|0.3|19.9999999999999|0.1|3|3|0.1|0.0199999999999999|1|79.9999999999993|0.01|29.9999999999998|7|0.01|0.1|1|0.01|0.00199999999999999|0.600000000000001|29.9999999999998|0.00500000000000001|0.3|0.00199999999999999|0.00199999999999999|0.600000000000001|79.9999999999993|29.9999999999998|0.0199999999999999|0.1|7|19.9999999999999|0.0599999999999995|1|0.01|7|3|19.9999999999999|0.00199999999999999|0.00199999999999999|79.9999999999993|0.0599999999999995|0.001|3|79.9999999999993|79.9999999999993|0.0199999999999999|3|29.9999999999998|29.9999999999998|0.00199999999999999|7|0.00500000000000001|0.0599999999999995|0.1|0.1|3|0.01|1|0.0199999999999999|19.9999999999999|79.9999999999993|3|19.9999999999999|7|0.001|0.00500000000000001|3|3|19.9999999999999|0.001|1|79.9999999999993|0.1|29.9999999999998|1|0.00500000000000001|0.3|0.01|29.9999999999998|0.001|0.1|7|0.0500000000000001|1|1|0.0599999999999995|0.01|0.600000000000001|29.9999999999998|0.00500000000000001|79.9999999999993|0.600000000000001|0.00500000000000001|0.0599999999999995|0.600000000000001|0.00500000000000001|0.001|0.3|19.9999999999999|0.00199999999999999|29.9999999999998|0.001|0.001|0.3|3|19.9999999999999|0.01|79.9999999999993|3|7|0.0199999999999999|0.600000000000001|0.00500000000000001|3|29.9999999999998|7|0.001|0.001|0.01|0.0199999999999999|79.9999999999993|1|29.9999999999998|29.9999999999998|0.01|1|19.9999999999999|19.9999999999999|0.001|1|79.9999999999993|0.0199999999999999|0.0599999999999995|0.0500000000000001|1|0.00500000000000001|0.600000000000001|79.9999999999993|7|3|0.600000000000001|7|3|0.0599999999999995|0.00199999999999999|1|1|7|79.9999999999993|0.3|1|0.0599999999999995|19.9999999999999|0.600000000000001|0.00199999999999999|0.1|0.00500000000000001|19.9999999999999|19.9999999999999|0.0599999999999995|0.00199999999999999|0.0199999999999999|0.600000000000001|0.600000000000001|0.0199999999999999|0.00500000000000001|0.3|19.9999999999999|0.00199999999999999|29.9999999999998|0.3|79.9999999999993|0.0199999999999999|0.3|0.00199999999999999|3|0.1|7|0.001|19.9999999999999|3|19.9999999999999|0.1|0.600000000000001|7|0.00500000000000001|0.00199999999999999|1|19.9999999999999|1|79.9999999999993|19.9999999999999|19.9999999999999|0.00500000000000001|0.600000000000001|79.9999999999993|7|0.0199999999999999|0.0599999999999995|1|0.01|1|0.0199999999999999|0.001|0.600000000000001|0.600000000000001|1|3|0.1|29.9999999999998|0.0199999999999999|0.01|0.3|0.3|0.01|3|29.9999999999998|0.01|0.1|0.001|79.9999999999993|7|0.0599999999999995|0.3|1|0.00199999999999999|0.001|0.600000000000001|7|0.0599999999999995|29.9999999999998|7|7|0.00199999999999999|0.3|7|1|79.9999999999993|0.0199999999999999|29.9999999999998|0.00500000000000001|0.01|79.9999999999993|0.3|0.01|0.600000000000001|0.600000000000001|0.0500000000000001|19.9999999999999|0.01|0.00500000000000001|0.1|0.1|0.00500000000000001|79.9999999999993|19.9999999999999|0.00500000000000001|0.0599999999999995|0.0199999999999999|1 | -0.4677847656|0.9397881187|-0.5550061325|-0.0201348027|0.3768766771|1.3764582607|-0.1011176189|-0.07846852|-0.3188347916|-0.4975642898|0.3725457726|-0.0214918396|0.1148692057|2.789747525|-0.4948387881|-0.9913909986|-1.9406376784|-1.6606079485|-0.2439431937|0.0236966824|-0.7805596465|0.4691937276|0.1817149347|-1.447866296|-0.6392501523|0.0392208131|0.0105713626|1.3083663425|-0.0066719392|-1.10297177|0.1057082453|0.0084631698|5.9798865779|0.1466450704|-0.4600087859|-0.389476967|0.319500681|0.0441334834|-0.5242545464|0.0265064499|0.7506755251|-0.2424359449|-0.3078206492|-1.3614616274|1.3505876568|-0.2741603838|-0.1207695951|-0.0021901362|-0.7141196108|-0.0609645772|0.4505786922|0.3086800839|0.2721829069|-0.5101810811|-0.3623549604|-1.4870763437|-1.482907364|0.0289353876|0.0559785042|0.1044776119|0.1307531381|-1.0414308354|-0.4338901868|-0.7373410915|1.3375796178|0.163765443|0.150621313|0.9927830634|-0.1882766411|0.1926287402|-0.0385107202|0.9178923666|0.8685192911|0.0022046175|-0.7211859234|-0.2497985263|-0.29455081|-0.2809718591|1.0411573661|0.9680432147|0.0459770115|-0.4663803638|0.957455729|0.5844335593|0.4830246098|-0.8587497391|-0.1629018245|-0.1238218016|0.4602804234|-0.2053636144|-0.0837602098|-0.6203481531|0.01929165|-1.6026318274|0.4963539564|0.0956840746|1.9326384928|-0.2483711177|-0.2266142762|-0.6139470464|0.0271105833|0.1412665024|-0.3179502272|0.0210349179|6.8847169982|-0.2850479398|2.1128345082|0|0.3832010792|0.0249407656|0.066052398|0|-0.0594318316|-0.101035615|0.0077762126|1.7869883473|0.0282031632|-0.0745517159|0.394238059|1.0201342281|-0.939675174|-0.0488406191|-1.020319349|0.037091988|0.0381727954|-0.4213365491|0.2505930895|-0.253615754|3.0816125308|0.3250096511|-0.3865002287|0.0922289305|-1.3373493976|-0.3582310221|0.7907091673|2.0141953018|1.0217441751|-0.8571805353|1.389495835|0|-0.2501924556|-0.5889036599|-0.1167618059|0.7936526036|0.1073097234|-1.1310907361|-2.1171639487|0.0385158557|-0.816490491|1.0541065096|-0.2735229759|1.2670335782|-0.5529083349|0.3804916023|-0.4226993376|2.6308150691|-0.7646252706|-1.16596187|0.4972941348|-0.2977650232|1.273656691|1.3014409244|0.0056255571|0.5318772501|-0.0829015544|1.86025914|1.6551479634|-0.0138831042|-0.9284092733|0.2016129032|-0.3897280389|-0.3593719179|0.9112984985|0.2715823109|0.0249407656|3.3581510411|-1.3367174616|0.4098635523|0.1776291829|1.747793799|2.0684499642|-0.5129451871|-0.1045285965|1.8824160423|-0.2943811596|1.0567401461|0.2492084451|-1.5048964396|0.3302276211|-0.5941283615|-0.1421403768|4.0083095715|-0.8842785275|0.7321695358|-1.3751634445|-0.2641249426|1.3654522948|-0.0490503411|-0.6578822055|-0.0906926652|-1.5232137192|-0.0482334498|-0.5250727399|0.1466362691|1.0081342658|-0.9550166954|-0.1608657502|0.5965047398|-0.3772518235|7.43787935|-0.8376762722|-1.0543491904|-1.5371248231|-0.4796458|0.0230946882|-0.2033674611|-0.4396984925|-1.935196634|0.1097560975|-0.2209012508|-5.0018918634|-1.0854475275|-0.6640888115|-0.3557265315|0.838068058|5.1800685486|-0.6353628825|0.0371298567|0.0737571914|-0.4348148439|2.3434134572|0|1.0497523775|-0.8923224124|0.0154348176|-0.925171786|-0.1836732557|-1.4432155382|0.0772135833|2.5835505657|2.5144192727|1.4588156325|0.5842838719|0.0208459473|-0.0600168047|0.7918316108|0.5315233761|-0.7111103517|0.4473650906|-0.504248796|-0.2293393074|-1.8686063033|1.2341748908|0|3.4506242906|0.187990711|-0.1967112267|-0.6536138394|1.6227354147|0.9763498749|-0.0668739475|-0.4096385542|-0.1004304161|-0.4042528555|2.0966105084|-2.6945758101|0.1606589632|1.5928118556|1.6404632726|3.3013677872|0.0857210113|-0.3299963955|0.0123031496|0.5355188647|1.1061610469|4.6069695188|0.2503128911|0.1661710687|-1.0052701648|-0.0363945166|0.073800408|-0.4626618767|1.028021938|-0.6351682639|0.4028281847|2.9423151373|0.7761733314|0.1381909546|-0.3019496132|0.0475437228|-0.2235044978|0.9353244221|-0.3347094843|-0.3554616197|0.8944711514|5.0714335406|0.319495945|-0.4107542942|1.3074850146|1.2403612341|0.3885198646|-1.2960497034|4.1529597576|-0.1654059557|-2.1979415103|-0.0107215739|-1.6321581405|-1.4820703022|-0.4553989747|0.0246852628|1.4537013374|0.4075673237|1.2795335727|-0.1976501592|-0.0784105875|0.2134246115|0.0293040292|-0.0703770459|2.3131790685|1.0924269163|1.2563527745|-1.0657021373|-0.1482590447|-0.0627588803|1.3395073233|2.3448983025|1.5365791874|0.6657094374|-1.7376520687|-0.2103357299|-1.540043031|-0.1716247139|0.4222012662|2.0869653375|1.5515503124|1.1350134535|-1.3361857013|-0.5816118725|1.6225283942|-0.1305994515|-0.5712109671|-0.1301330248|-0.14363777|1.5016063492|-1.166803795|-0.638490247|0.9351227323|1.6559359293|2.4061326437|0.42378598|-0.0465116278|-0.4985666209|-0.5549916718|-0.0065009558|5.8731884857|3.222425989|-0.2491990032|0.0180819593|-0.2037620334|0.5554828915|-0.5898538536|0.3176539553|-0.4634738468|-0.2065953276|0.119737236|-0.4786291829|1.3293574671|-0.2869014641|1.9645655003|-0.0365340022|0.8106111424|-0.3877099671|0.0671656113|1.485172298|-0.0739098299|0.989953955|-0.6156877232|-0.1293493726|-1.3142579191|0.1550387597|0.0366568915|3.7122253754|-0.2347362814|-1.2787068276|0.0737463126|0.7167826183|0.6850775193|0.5006887058|0.6881787885|0.6420141578|0.0337526114|-0.1586157174|-0.1185958253|0.0090752336|0.8425078754|-0.9589041095|0.0260899543|1.8258268467|-0.1482495153|0.3294207586|-0.2521750095|-0.2360863266|-0.498067493|-0.6118738696|-1.7017677638|-0.1936511151|0.5862542098|-0.1172745396|-2.7459507774|0.0910746812|-0.894273342|0.0613185898|1.5986857249|-2.4015339228|-0.5595025765|-1.4332556011|-0.7065793063|-1.0855712968|0.5028367673|-1.6292495188|0.0944924405|-0.2317369234|-0.152825415|-0.6913836493|-1.34372901|-0.0764014898|-2.1707621363|-0.3087560361|0.7828450147|0.0460617226|2.1531405274|0.1359619307|0.0863557859|5.1238645219|-0.1236510791|-1.1134440819|-1.6576177257|-0.3890510402|-0.3508998645|0.0191573132|-1.0927639999|-0.1467765609|-0.115473441|-0.1171037175|-0.9053153817|1.3711358229|-0.1530035445|0.1691871784|1.1981110017|-0.0557622336|-0.386610073|0.2706098386|0.6113136809|1.1208870676|1.4385514899|0.2807554874|0.0253132514|-0.6532110699|0.1374312843|-0.0119206913|1.8899167853|-0.5384181727|0.1488253427|0.4098515328|-1.764357083|0.4720792964|0.4765888358|-0.5507367029|-0.1829108961|0.478338048|-1.0012021722|1.0917108797|0.5461435974|0.8402749369|0.0808952406|0.2369963826|-0.0112905047|0.680302451|0.2404081442|-0.5593441624|-0.2584270211|0|-0.7911278773|-0.9879313378|1.5567025551|0.6810740014|-1.3387896179|-0.3179197283|-0.5530606274|0.0451416318|2.0629247822|0.0128854358|0.6001791464|0.0105418511|-0.5734077673|0.1633097441|0.0400534045|4.2445274685|0.4264378203|0.1310231849|0.1580670655|-0.1420144199|-0.1671548144|-0.4741689195|0.0525348043|-0.8068647967|-0.0459619771|1.0113149201|0.1273723093|1.2781954887|-0.0912825194|-0.7150704769|0.1044932079|-0.2662545154|-0.2359560759|0.2756524258|-0.170690802|0.1155068205|-0.0456621005|-0.4737547142|-0.0943145465|0|-0.0902472079|-0.6861858949|1.1629176294|-0.2179779946|0.303217794|0.050451791|8.1455120601|-0.5780463636|-0.5295722894|0.5364771627|-0.8452064718|0.8016268901|0.1784803671|-0.1278118609|-0.1306568475|-2.3239781627|0.0968288549|6.123513936|-0.0991940483|-0.0694776877|-1.0993239314|-1.7189102104|0.1212545559|-1.5375990727|-0.7900943317|-0.1063761818|-1.4960108568|-0.4339145649|-0.4976175502|3.3816667083|0.5785504598|-0.8408408409|0.3293789576|0.2069716776|-0.4555166296|0.4302175029|0.2008285235|0.2581644507|3.1684590617|-1.1503905752|-0.221434898|-1.1433882049|1.6718977955|2.3623585836|0.4472226017|-0.3523608175|0.9673202615|-0.6077912548|0.0871628763|1.3776875992|-0.3860388873|-1.7770992634|-0.1328181598|-0.6312294284|0.909748761|-0.242685722|-0.9718583946|0.0478125747|-0.0318557926|0.9980990611|-0.7262164125|-0.8826898577|-0.2265575834|0.2061791639|3.1851408594|-1.387993121|-1.2596736204|0.3261853536|0.1621673185|3.7300558219|1.0886904806|0.5247723414|0.8584588497|1.6151573889|-0.7694704506|-1.7271513313|0.7329763287|0.3929664096|4.7297981422|-1.3144277293|-0.3027027027|-0.2737447427|-0.0648004147|1.3167636027|0.3250543382|-0.9420379046|-0.2275600505|-0.6058121188|0.0762572816|-0.061221991|0.7528885086|-0.5448910114|-0.3092963219|0.0363592291|0.0372083312|0.4380170257|0.1132944029|-0.4943064031|0.994495743|-1.4760147602|2.4304825428|-0.3474302144|1.1704215789|-0.5427637169|-2.0207619825|-0.0458557835|-1.5973966753|0.3560431101 | dt4 | |||||||||||||||
DTXSID8024109 | 66332-96-5 | Flutolanil | TOX21_ERa_BLA_Agonist_ratio | 42 | 2.07675760930659 | poly2 | 0.156784995706867 | 3.98740811010708 | 1.30260587951674 | -141.060510551291 | -0.254139410746411 | 2.50607543243183 | 0.107045055842162 | -961.240670524643 | 0 | 20.6542318411757 | -0.325604432859337 | 29.9999999999998|0.00199999999999999|0.0500000000000001|0.001|79.9999999999993|1|0.0199999999999999|79.9999999999993|1|0.0199999999999999|0.0500000000000001|29.9999999999998|0.00199999999999999|19.9999999999999|0.0500000000000001|79.9999999999993|0.0199999999999999|29.9999999999998|0.600000000000001|0.1|0.001|0.00199999999999999|7|3|0.0500000000000001|0.00500000000000001|0.01|19.9999999999999|29.9999999999998|0.0199999999999999|0.00199999999999999|3|7|0.0500000000000001|0.0500000000000001|0.0199999999999999|1|7|0.00500000000000001|0.00500000000000001|19.9999999999999|0.001|0.0199999999999999|79.9999999999993|1|0.600000000000001|29.9999999999998|3|29.9999999999998|0.01|0.0199999999999999|19.9999999999999|0.001|7|0.0199999999999999|29.9999999999998|0.01|19.9999999999999|0.01|0.0500000000000001|29.9999999999998|0.001|1|79.9999999999993|0.0199999999999999|0.00199999999999999|0.00500000000000001|7|0.0500000000000001|0.01|0.001|1|1|0.0199999999999999|0.0199999999999999|0.01|0.600000000000001|3|0.00199999999999999|3|7|19.9999999999999|79.9999999999993|3|29.9999999999998|0.001|0.00500000000000001|0.0500000000000001|0.1|0.3|19.9999999999999|0.600000000000001|19.9999999999999|0.00500000000000001|7|0.001|0.0199999999999999|0.01|79.9999999999993|0.01|7|29.9999999999998|1|0.01|1|3|0.0199999999999999|0.3|29.9999999999998|79.9999999999993|1|0.00500000000000001|0.0500000000000001|7|19.9999999999999|0.00500000000000001|7|0.00500000000000001|0.0199999999999999|19.9999999999999|79.9999999999993|0.3|1|0.01|0.01|0.600000000000001|0.3|0.3|0.01|0.00500000000000001|0.3|19.9999999999999|0.3|0.00199999999999999|0.001|0.00199999999999999|1|0.0199999999999999|0.00500000000000001|0.3|0.1|0.00199999999999999|29.9999999999998|0.001|0.3|0.600000000000001|0.600000000000001|0.01|0.01|0.00199999999999999|0.0500000000000001|0.0199999999999999|19.9999999999999|0.600000000000001|0.00500000000000001|0.01|1|0.001|79.9999999999993|7|3|0.600000000000001|19.9999999999999|79.9999999999993|0.00199999999999999|0.0199999999999999|0.0500000000000001|0.1|7|29.9999999999998|7|0.00199999999999999|3|0.3|79.9999999999993|0.00500000000000001|29.9999999999998|0.00500000000000001|3|19.9999999999999|3|0.00500000000000001|0.600000000000001|1|0.01|0.1|19.9999999999999|3|0.3|0.00199999999999999|0.0199999999999999|0.00199999999999999|7|0.00199999999999999|3|0.00199999999999999|79.9999999999993|7|3|0.1|29.9999999999998|0.00500000000000001|0.00500000000000001|0.3|0.1|0.1|0.00500000000000001|0.00199999999999999|0.1|7|0.1|0.001|79.9999999999993|0.001|0.600000000000001|0.01|3|0.1|0.0500000000000001|0.001|19.9999999999999|3|0.1|0.01|0.3|0.00500000000000001|0.00500000000000001|0.001|0.0199999999999999|0.01|7|0.3|79.9999999999993|0.00500000000000001|0.600000000000001|79.9999999999993|1|3|29.9999999999998|29.9999999999998|7|29.9999999999998|0.001|0.01|0.0199999999999999|0.0500000000000001|3|19.9999999999999|3|0.001|1|0.1|3|0.00199999999999999|0.3|29.9999999999998|0.00199999999999999|0.00199999999999999|1|79.9999999999993|7|3|0.600000000000001|29.9999999999998|3|0.0500000000000001|0.600000000000001|0.00500000000000001|0.0500000000000001|7|0.600000000000001|0.1|0.001|0.01|0.001|0.3|79.9999999999993|1|0.001|3|1|0.600000000000001|0.0500000000000001|19.9999999999999|79.9999999999993|3|0.1|0.0500000000000001|0.0500000000000001|0.00199999999999999|0.001|0.0500000000000001|3|0.0500000000000001|0.600000000000001|29.9999999999998|29.9999999999998|0.0199999999999999|0.00500000000000001|1|0.0500000000000001|0.0199999999999999|79.9999999999993|7|1|79.9999999999993|0.00500000000000001|0.1|0.00199999999999999|79.9999999999993|3|29.9999999999998|0.00500000000000001|1|0.1|1|19.9999999999999|19.9999999999999|0.00199999999999999|19.9999999999999|0.3|0.00500000000000001|0.01|0.3|0.0199999999999999|1|7|0.600000000000001|19.9999999999999|0.600000000000001|0.0500000000000001|0.600000000000001|0.001|0.1|19.9999999999999|0.001|0.001|0.600000000000001|3|1|0.600000000000001|0.3|19.9999999999999|1|0.0199999999999999|0.3|0.00199999999999999|0.0199999999999999|1|0.01|0.0500000000000001|79.9999999999993|0.00500000000000001|0.600000000000001|0.1|29.9999999999998|0.600000000000001|29.9999999999998|29.9999999999998|0.0199999999999999|0.0199999999999999|0.0199999999999999|7|29.9999999999998|1|0.0500000000000001|0.0199999999999999|0.0199999999999999|0.001|79.9999999999993|0.01|1|0.0199999999999999|0.3|19.9999999999999|19.9999999999999|0.3|0.00199999999999999|79.9999999999993|0.0199999999999999|29.9999999999998|3|1|0.600000000000001|29.9999999999998|0.00199999999999999|0.0500000000000001|0.001|29.9999999999998|1|19.9999999999999|0.00199999999999999|0.3|0.0500000000000001|0.600000000000001|7|7|0.001|7|0.1|0.00199999999999999|0.00500000000000001|0.1|0.001|0.600000000000001|1|0.3|7|0.3|0.0199999999999999|0.01|79.9999999999993|0.00199999999999999|7|79.9999999999993|79.9999999999993|0.01|0.01|0.3|0.0199999999999999|0.1|7|0.600000000000001|0.01|0.1|0.001|79.9999999999993|0.600000000000001|0.00500000000000001|0.01|29.9999999999998|0.00199999999999999|0.3|0.00199999999999999|19.9999999999999|0.3|19.9999999999999|19.9999999999999|0.3|29.9999999999998|0.01|0.00199999999999999|19.9999999999999|0.600000000000001|0.0199999999999999|0.01|1|0.3|3|0.00500000000000001|0.600000000000001|0.01|0.1|7|79.9999999999993|0.1|0.001|29.9999999999998|0.01|19.9999999999999|29.9999999999998|0.3|0.3|0.3|0.001|0.0199999999999999|79.9999999999993|19.9999999999999|0.600000000000001|7|0.001|0.1|0.0199999999999999|0.01|1|1|3|3|0.0500000000000001|0.001|79.9999999999993|0.0500000000000001|79.9999999999993|0.01|0.3|0.1|3|0.1|79.9999999999993|0.00500000000000001|29.9999999999998|0.001|0.00199999999999999|29.9999999999998|0.3|0.00500000000000001|0.00500000000000001|0.1|29.9999999999998|0.0500000000000001|0.600000000000001|79.9999999999993|0.00500000000000001|0.0500000000000001|79.9999999999993|1|0.3|0.00199999999999999|0.00500000000000001|19.9999999999999|0.001|0.1|0.001|7|0.1|79.9999999999993|7|0.1|19.9999999999999|0.00500000000000001|0.001|7|79.9999999999993|0.01|0.00500000000000001|0.600000000000001|0.1|29.9999999999998|0.00199999999999999|79.9999999999993|0.00500000000000001|0.0500000000000001|3|7|0.0500000000000001|79.9999999999993|19.9999999999999|0.00500000000000001|7|19.9999999999999|0.1|0.1|0.1|79.9999999999993|0.3|3|7|0.0500000000000001|3|19.9999999999999|0.01|0.01|0.00500000000000001|0.600000000000001|0.3|0.600000000000001|29.9999999999998|0.00500000000000001|0.1|0.0500000000000001|1|0.001|19.9999999999999|0.1|0.00199999999999999|0.00199999999999999|0.0500000000000001|19.9999999999999|0.0199999999999999|0.3|29.9999999999998|0.0500000000000001|3|0.0500000000000001|7|1|0.0500000000000001|7|0.00199999999999999|3|3|1|3|0.01|3|7|79.9999999999993|0.3|0.1|0.600000000000001|0.00199999999999999|0.00199999999999999|0.01|0.1|0.3|19.9999999999999|0.00199999999999999|0.0500000000000001|0.0199999999999999|0.600000000000001|3|7|0.0500000000000001|0.001|0.001|0.0199999999999999|7|0.01|0.1|19.9999999999999|0.0199999999999999|1|0.0199999999999999|3|0.600000000000001|0.01|1|0.001|0.600000000000001|1|0.600000000000001|0.3|0.00500000000000001|0.600000000000001|0.00199999999999999|29.9999999999998|0.1|0.0500000000000001|29.9999999999998|0.001 | 0.0165693678|-3.2075161733|-0.103175513|-0.0362811791|0.5293605347|-1.4916380538|-1.2930078131|2.3197620067|0.8221612672|0.8752186945|1.22605001|0|0.0216239594|0.965875602|7.873197624|-0.1641223596|-0.1578739638|0.1362110622|-0.5369568839|0.4853414031|0.0753904324|0.9370039362|-0.2864037923|0.208129285|-0.0126968004|1.1571582346|0.3736188511|-1.20357569|-0.1508346479|0.0246500899|1.2160282964|0.681781241|0.0432432432|-0.0261437907|-0.9602553836|-0.9009101587|1.0398764268|-0.7921234503|-0.2480372792|0.0766871165|-0.1496976284|-0.8811640121|1.5025881111|0.6087669806|0.7222309918|-0.6243347568|0|0.0737571913|-0.0465203429|-0.5498270547|0.0789369819|2.0875050107|-0.4028975576|-0.1816640425|2.5573601925|-1.047005603|-0.5666082394|-0.1255177607|-0.6367194427|0.0941109812|0.8800249056|0.0128221566|0.1761486856|-0.953897334|-0.2609094232|1.043651874|0.5827564258|0.3146185501|-0.251085133|1.9003759027|0.4876438641|-1.9477005876|0.5228710902|0.1015075911|0.4564138862|-1.0949457893|0|-2.0814137985|-0.0629048369|0.3769337481|-1.6703579635|-0.1117299861|-0.6714642129|0.2950287653|-0.6611609803|0.2306937725|0.7702931198|0.0082839581|-0.2460844691|0.0605180343|-0.280472128|0.0234595686|-0.0274665738|0.0435729847|0.8151451969|1.3007659885|-0.8029420836|1.0450175649|-0.542215203|2.4249471827|1.3567031439|-0.6642322763|1.1325322357|1.3911204515|0.9429585891|-1.2570302838|4.6982478422|-0.2230208664|-0.4743833017|0.4868799422|-0.0837588506|0.9686264582|0.1165182054|-0.5477374756|-0.3405221339|-1.1900943478|2.8547814462|1.5735766354|1.4571666906|0.633392133|5.4634796687|-0.2602170689|0.3374938672|-1.018318766|-0.685280774|0.1662728625|-0.2629924606|0.8155414847|-0.0122189638|-0.0483208504|-0.3303508478|0.8331644121|0.307030251|3.2020135587|0.9247272054|0.9845120673|0.1527614572|-0.8715952841|2.4471458265|0.3110816004|2.0447314251|0.1909093597|-1.0729253167|0.1490161848|-1.9969947336|-0.2356374637|0.180709284|0.0124703829|-0.1954751916|-2.2964456063|-0.1086571482|-0.4052377368|-0.0997879506|0.436058916|-1.4397244238|0.9218489174|-0.9227042947|-0.0882925427|-0.4461602122|2.7846481586|0.0456865353|1.1857048581|-0.8429550897|-0.9319468447|1.4279090178|0.6502037227|0.4109530157|-0.1781397124|2.3042394963|-1.70419294|0.1061946903|0.7074677041|0.1926287403|-0.3618332886|0.6712639393|1.2527808659|0|0.0904509626|-1.8105160663|-0.0987821592|-0.0164294838|1.6372896673|1.2897977331|-0.0679968135|-0.9968066533|0.7238483173|-0.2767936225|-0.88523837|3.343070849|-0.0982511298|0.4873822518|-0.1182313456|0.127735609|2.5564779906|-0.7944146186|-0.0152565791|0.781937991|-1.6762784124|0.692476163|-0.0441014332|-0.0437636761|-0.6235552665|0.1627834004|-0.1051893408|-1.4307989544|-0.091637454|-0.0127828199|-0.059220446|0.2371468724|-0.8805111463|0.0339597012|0.0984251722|-2.0348108426|0.5562692926|-0.9624150142|-0.8957745838|0.0587783957|-0.6505222764|0.6290206312|-0.365068479|-0.0602993763|0.2205967723|-3.6170937272|0.5354360174|-0.0523089662|0.0825569052|-0.403461859|0.4364620549|-0.1209292125|0.8556844177|1.1542149895|0.1428638648|-2.6151970958|0.1181031825|-0.3270724268|-0.8536796936|0.2928731154|2.6497776149|0.782201113|0.1395348837|-0.9233233921|-2.0213490395|0.1710669601|-1.5782016722|0.6719285247|-1.9939351508|1.4131968576|8.9211038723|-0.0106078285|0.0028767466|0.1686559419|-0.4635338332|-0.5368557921|0.4019690759|1.6611123789|0.6827232374|1.9310718831|0.6390516559|-0.0473092844|-0.1075268817|0.671486224|-0.3367404479|-0.3623205441|-0.1410780334|-0.1958224543|0.0128256664|20.6095528856|0.6658927957|0.7595851469|-0.2541690626|-2.3135232006|0.2956306901|0.0730618487|0.2912643079|-0.2593627409|-0.8823260834|-1.9669697532|2.3778762888|1.4373037438|0.9474971622|1.8689266127|0.5513173021|0.3956478733|-0.0481944311|-1.1321979|-0.6068212569|-0.0706838664|-0.6633201645|-1.191106658|0.8322741653|1.5698825717|-0.4553610203|-0.3900803652|-0.6443907803|60.0280642803|-0.0741839762|-0.0788794279|-0.4254056193|-0.192990047|0.2036945996|0.4803883624|0.3150433185|-0.1371058208|-0.5268276501|0|-4.0613166364|-1.5386692916|-0.549241882|-0.1722440945|1.2734712437|-6.4956102691|0.7320848821|1.0551403182|1.0132034362|-0.5088058109|1.7900039147|0.0246184144|0.0496129666|-0.130455408|-0.8356659279|-1.2080424941|-0.9977427427|0.948897901|1.0118241611|0.0376884422|1.4563897706|-0.6367241241|-0.1087881501|-2.691499692|-1.477285752|1.3516116862|0.8693387263|-0.3158848447|1.0597541391|0.0360142935|0.1250891757|0.2353248791|-1.8541919074|-0.032337954|0.3312579033|-0.4167264976|0.0726291762|0.0106123315|1.7367282297|-1.3141455106|-0.4443215811|0.0521575651|0.4766663379|-0.1774937877|0.1739562624|0.4404147304|-0.2564401445|-0.1150306748|-5.5436796606|-1.254276112|0.1112759643|-0.9149144734|-1.0396585474|-0.3053867931|-0.0125216766|0.4452080465|1.4783549815|0.2201261417|-1.3338336879|-0.7656733217|-0.1148511352|-0.3185093187|-1.6157074697|0.4888655442|-0.0344371425|0.2636640863|-0.7558016541|0.9635838615|2.0171173032|-0.1772111729|0.0400534045|-0.1135635958|-0.1565100984|-0.8273917201|-0.5901590952|-0.2842010075|0.2425702693|-0.5951879736|0|-2.9496893608|0.5979538422|0.0231125809|1.2389517249|-0.4701758662|-1.1658928731|0|-1.8099636555|1.257414922|-0.0882624939|0.9055684518|-0.1414093802|0.1935712509|-0.0501332269|-1.370045255|-1.4049755607|-0.777661739|-0.5728650849|0.9579520035|2.0432517063|1.2977025434|-2.5210576865|0.3163790689|-1.967244706|0.0196465737|-0.3356582389|-0.3096162364|-0.7249491635|-0.175724865|1.6207020291|1.5878954503|-1.0790989669|0.649108853|0.1231527093|1.1491901329|0.8867028136|0.5520039631|0.4510795369|-0.7249378867|-0.0979551855|3.5728717829|-0.3388867958|1.3274498174|-0.3614185678|-0.3728479|-1.2141201239|-0.3491795533|0.6095744658|-0.5913753703|-0.6217682678|-0.0665462496|-0.482458241|1.9612820297|-1.1718382005|-0.4736973382|0.4594693621|-0.3387151406|-0.0646986813|-1.273930504|-0.1193175038|0.1836627601|0.6537329164|0.3704430358|-0.140236064|0.0391798353|1.6161561889|-0.3837512197|0.0852551108|2.4677572432|-1.9430785609|0.5419941903|-0.083039236|-0.3219255843|-0.0096070707|-0.050999034|-0.9812532219|0.0105418511|-0.682662785|0.012399256|1.2290047522|0.2996356388|-0.762469269|-0.4817610614|-1.3524325763|0.3101111249|0.8359371425|-2.0194402965|0.7317522054|0.7038087103|-0.0130913132|0.9789864145|-0.147275405|0.8948706841|0.12318305|2.2651888035|-0.0030258901|-0.5022888723|0|0.6104822887|0.1566389667|-2.3914580578|0.1802623896|-0.0627588803|-0.9766069615|-1.5936355524|0.6362615726|-1.2070166297|0.5265674767|1.4825298606|-0.5485557037|-1.0117112813|0.3070231546|0.0676870708|0|-0.922744433|-0.0577256108|0.2474653665|0.020854309|0.1316261816|0.9373258689|-0.8492083223|1.1217463735|-0.1675930816|-0.4649151258|0.5679326875|-0.4731287153|-0.4857416903|-1.9102805524|-0.1049431373|0.3893267495|-0.0381727954|0.1734338471|0.3264415275|0.166078472|-0.0415624912|-0.1416122004|0.4441212531|-2.3504486416|-2.7237934481|-0.4093983624|-0.4356965299|1.1735525524|-0.0583022387|0.5776899035|0.0699785354|-1.8456705049|1.0312430717|71.2354388363|-0.0640034704|0.0278280228|0.0072835586|1.2983910868|0.0706903371|0.4678685711|0.7251035906|-0.0553587245|-0.8377412721|-0.0142998324|1.2788037162|0|-0.6126174642|-0.926945557|0.174994601|-1.377150432|0.0770200927|-1.7161353383|0.0963855421|1.8473449146|-0.7083241524|0.097335207|-0.4891435403|0.3344853739|-0.7732057121|-0.4620359081|-1.1074767651|0.6934801972|-1.5240145972|1.4300090007|-1.9138320414|-0.456591153|-0.2692778458|0.8999415157|0.1508295625|0.9966357412|0.3688079056|-0.0619962802|1.2775403809|0.6794102884|-0.085951676|-1.039572118|0.2921942395|0.2390041923|0.9335824661|0.2053139414|0.4330879168|0.2393978212|-0.2822832154|-0.7310682163|2.0687975634|0.183961777|-0.4596955145|0.0728463802|-3.6576196182|0.7895713329|-0.9902101462|-1.1352871821|4.4545072267|-0.2071220157|2.2040572455|-0.1754899093|-1.0075750037|1.5674256444|1.9055529188|0.4378053254|0.3658940292|1.7779161023|0.1113633786|-0.7647002743|-0.6902248174|1.9425600144|0.5017530717|0.414038708|0.1079913606|-0.0514509158|-0.8656345907|-0.0661302766|-0.1268516054|0.5953944488|-0.6304233145|-1.0121614453|0.0092773064|0.2086981638|0.3761958844|0.1954821894|0.1497830229|0.0618429189|-0.1530382513|2.0195232409|-1.4424968527|1.8328911403|0.6324740751|-3.4573673933|0.1175395062|-0.5713209224|0.6292895448|1.8633159783 | dt4 | ||||||||||||||
DTXSID5020607 | 117-81-7 | Di(2-ethylhexyl) phthalate | TOX21_ERa_BLA_Agonist_ratio | 32 | 2.07675760930659 | poly2 | 0.101406491187245 | 1.3555566125726 | 0.842799844291887 | -116.215424149384 | -0.422734747165152 | 2.50607543243183 | 0.45319212723266 | -831.733271933172 | 0 | 17.0092878642168 | -0.210596702206192 | 0.00199999999999999|0.3|19.9999999999999|29.9999999999998|0.00199999999999999|0.600000000000001|7|7|0.001|0.001|0.600000000000001|1|0.3|7|7|79.9999999999993|79.9999999999993|0.01|0.01|0.3|0.0199999999999999|0.1|7|0.600000000000001|19.9999999999999|19.9999999999999|0.3|0.01|19.9999999999999|7|79.9999999999993|0.1|0.001|29.9999999999998|0.3|0.001|0.0199999999999999|79.9999999999993|19.9999999999999|0.001|0.1|7|19.9999999999999|0.001|0.01|1|1|3|79.9999999999993|0.01|0.3|0.1|3|0.00199999999999999|29.9999999999998|0.3|0.00500000000000001|0.00500000000000001|0.1|29.9999999999998|0.0500000000000001|0.600000000000001|79.9999999999993|7|79.9999999999993|0.1|0.00500000000000001|7|3|7|0.0500000000000001|79.9999999999993|19.9999999999999|0.1|79.9999999999993|0.3|3|7|0.0500000000000001|0.0500000000000001|1|7|3|29.9999999999998|0.00199999999999999|0.0500000000000001|0.001|79.9999999999993|0.00500000000000001|0.600000000000001|0.3|0.600000000000001|1|0.0199999999999999|79.9999999999993|1|0.0199999999999999|29.9999999999998|0.00500000000000001|0.1|0.0500000000000001|1|0.0199999999999999|0.0500000000000001|1|29.9999999999998|7|0.00199999999999999|0.00500000000000001|19.9999999999999|0.00500000000000001|0.0500000000000001|0.001|19.9999999999999|0.1|0.00199999999999999|0.00199999999999999|0.0500000000000001|19.9999999999999|0.0199999999999999|0.3|29.9999999999998|79.9999999999993|0.0199999999999999|29.9999999999998|0.600000000000001|0.1|0.001|0.00199999999999999|7|3|0.0500000000000001|3|7|0.0500000000000001|0.00199999999999999|3|0.00500000000000001|0.01|19.9999999999999|29.9999999999998|0.0199999999999999|1|3|0.01|3|7|0.00199999999999999|3|7|0.0500000000000001|0.0500000000000001|79.9999999999993|0.3|0.1|0.600000000000001|0.00199999999999999|0.0199999999999999|0.0199999999999999|0.600000000000001|1|0.600000000000001|19.9999999999999|0.001|0.0199999999999999|79.9999999999993|1|0.00199999999999999|0.01|0.1|0.3|0.600000000000001|29.9999999999998|3|29.9999999999998|0.01|19.9999999999999|0.00199999999999999|0.0500000000000001|0.0199999999999999|0.600000000000001|0.01|0.0199999999999999|0.600000000000001|19.9999999999999|3|0.001|0.00199999999999999|7|3|0.0199999999999999|3|7|0.0500000000000001|0.001|0.001|0.0199999999999999|7|0.01|0.1|19.9999999999999|29.9999999999998|0.01|19.9999999999999|0.01|0.0500000000000001|29.9999999999998|0.001|1|79.9999999999993|0.0199999999999999|1|3|0.01|0.001|1|0.00199999999999999|0.00500000000000001|7|0.0500000000000001|0.01|0.600000000000001|0.3|0.00500000000000001|0.600000000000001|0.00199999999999999|0.001|1|1|0.0199999999999999|0.0199999999999999|29.9999999999998|0.1|0.0500000000000001|29.9999999999998|0.001|0.01|0.3|0.01|0.3|0.3|7|19.9999999999999|79.9999999999993|3|29.9999999999998|0.001|0.00500000000000001|0.0500000000000001|0.1|0.3|19.9999999999999|0.600000000000001|19.9999999999999|0.00500000000000001|0.00199999999999999|7|0.0500000000000001|0.001|0.0199999999999999|0.0199999999999999|19.9999999999999|0.01|0.600000000000001|79.9999999999993|0.00500000000000001|0.01|0.01|7|1|29.9999999999998|0.001|1|79.9999999999993|0.01|1|3|0.0199999999999999|0.3|29.9999999999998|79.9999999999993|1|0.00500000000000001|0.0500000000000001|7|19.9999999999999|0.00500000000000001|7|0.00500000000000001|0.0199999999999999|19.9999999999999|79.9999999999993|0.3|1|0.01|0.600000000000001|0.3|0.00500000000000001|19.9999999999999|0.00199999999999999|0.001|0.00199999999999999|1|0.0199999999999999|0.00500000000000001|0.3|0.1|0.00199999999999999|29.9999999999998|0.001|0.3|0.600000000000001|0.600000000000001|0.01|0.01|0.00500000000000001|0.1|0.00500000000000001|0.1|0.1|7|3|0.600000000000001|19.9999999999999|79.9999999999993|0.00199999999999999|0.0199999999999999|0.0500000000000001|0.1|7|29.9999999999998|7|0.00199999999999999|0.001|3|0.0199999999999999|0.3|0.01|79.9999999999993|7|0.00500000000000001|0.3|29.9999999999998|79.9999999999993|0.00500000000000001|0.00500000000000001|3|0.600000000000001|19.9999999999999|79.9999999999993|3|1|0.00500000000000001|0.600000000000001|1|0.01|0.1|19.9999999999999|3|0.3|0.00199999999999999|0.0199999999999999|0.00199999999999999|7|0.00199999999999999|3|0.00199999999999999|79.9999999999993|7|3|0.1|29.9999999999998|0.00500000000000001|0.3|0.1|0.00199999999999999|7|0.001|79.9999999999993|0.001|0.600000000000001|0.01|3|0.1|0.0500000000000001|0.001|19.9999999999999|3|0.1|0.01|0.3|0.00500000000000001|0.00500000000000001|3|0.0500000000000001|0.00199999999999999|0.0500000000000001|0.0500000000000001|3|29.9999999999998|29.9999999999998|7|29.9999999999998|0.001|0.01|0.0199999999999999|0.0500000000000001|3|19.9999999999999|3|0.001|3|1|29.9999999999998|0.1|0.00500000000000001|3|1|0.00199999999999999|0.1|0.3|29.9999999999998|0.00199999999999999|0.00199999999999999|1|79.9999999999993|7|3|0.600000000000001|29.9999999999998|3|0.0500000000000001|0.600000000000001|0.00500000000000001|0.0500000000000001|7|0.600000000000001|0.1|0.001|0.01|0.001|0.3|79.9999999999993|1|0.001|3|1|0.600000000000001|0.0500000000000001|19.9999999999999|79.9999999999993|0.1|0.0500000000000001|0.001|3|0.600000000000001|29.9999999999998|29.9999999999998|0.0199999999999999|0.00500000000000001|1|0.0500000000000001|0.0199999999999999|79.9999999999993|7|1|79.9999999999993|0.00500000000000001|0.1|0.00199999999999999|79.9999999999993|1|0.0199999999999999|0.001|0.01|0.0199999999999999|1|19.9999999999999|19.9999999999999|0.00199999999999999|19.9999999999999|0.3|0.00500000000000001|0.01|0.3|0.0199999999999999|1|7|0.600000000000001|19.9999999999999|1|0.600000000000001|19.9999999999999|0.0500000000000001|0.00199999999999999|0.600000000000001|0.3|0.001|0.0500000000000001|0.1|19.9999999999999|0.001|0.001|0.600000000000001|3|1|0.600000000000001|0.3|19.9999999999999|1|0.0199999999999999|0.3|0.00199999999999999|0.0199999999999999|1|0.01|0.0500000000000001|79.9999999999993|0.00500000000000001|0.600000000000001|0.1|29.9999999999998|0.600000000000001|29.9999999999998|29.9999999999998|0.0199999999999999|0.0199999999999999|0.0199999999999999|7|29.9999999999998|0.0500000000000001|0.0199999999999999|79.9999999999993|1|0.3|19.9999999999999|19.9999999999999|0.3|0.00199999999999999|79.9999999999993|0.0199999999999999|29.9999999999998|3|1|0.600000000000001|29.9999999999998|0.00199999999999999|0.0500000000000001|0.001|29.9999999999998|0.600000000000001|0.01|0.3|0.00500000000000001|0.01|7|0.1|0.00199999999999999|0.00500000000000001|0.1|0.600000000000001|0.3|7|0.0199999999999999|0.001|0.01|0.1|79.9999999999993|0.0199999999999999|0.00199999999999999|0.01|0.1|0.001|79.9999999999993|0.600000000000001|0.00500000000000001|0.01|29.9999999999998|0.00199999999999999|0.3|0.0199999999999999|1|3|0.600000000000001|0.1|0.01|19.9999999999999|29.9999999999998|0.3|0.3|79.9999999999993|0.00500000000000001|0.1|0.00199999999999999|0.00500000000000001|3|0.0500000000000001|0.001|79.9999999999993|0.0500000000000001|0.0500000000000001|0.1|3|79.9999999999993|19.9999999999999|0.00500000000000001|0.01|29.9999999999998|0.01|0.001|0.00500000000000001|0.0500000000000001|79.9999999999993|1|0.3|0.00199999999999999|0.00500000000000001|19.9999999999999|0.001|0.1|0.01|0.600000000000001|29.9999999999998|79.9999999999993|0.0500000000000001|0.00500000000000001|7|19.9999999999999|0.1|0.1 | 2.2202861313|0.0726216412|0.1107828655|-1.1670609355|-0.0430195563|-1.0156652701|0.058920575|21.7972180088|1.1091300915|1.0815029193|-1.3656225378|-0.2824467584|1.4979864747|-1.1783844374|1.3560303522|-0.5822101734|1.4899846997|0.212139069|-0.3534562819|-0.3529220445|0.6207341148|-0.1078004793|2.7136801005|-1.2942188871|0.1711189276|0.3003957211|0.0842903803|-0.50557828|-0.4578512177|-1.7772542491|0.3467929913|-0.0103799044|1.103068863|0.5167705785|-1.8312537603|0.198889394|-0.1775072904|0.0235404896|-0.3975793274|0.2934268659|0.2333962643|0.04713646|-0.8739473436|0.5491981608|1.2444586447|0.1449434304|-1.5855635435|-0.2804143379|-0.17628197|-1.5640067766|0.0112789091|-0.1801455417|-0.7005672044|-4.4304043298|-1.1748014747|1.1632850884|0.2935857174|-0.1298420256|-0.0800915332|1.4514287761|0.0464619539|-0.5570576917|-1.5811500397|0.2866989712|0.3439873871|0.1245588541|0.3704812502|0.4633303015|-0.2196542832|0.2654966353|-0.3791546347|0.1647834274|0.9285923898|-1.2838811108|-0.7358658273|-0.6457543451|1.6870601879|-0.0840711861|7.632327156|0.1519797608|-0.01648977|-0.7228515654|0.144707209|-0.217809094|1.0075749053|-1.5689125619|-1.8709757257|1.8631742055|1.197696591|-0.0721403999|-1.8576127447|0.1483340939|-1.3293877344|0.2798453741|-0.7511818203|-0.3824977409|1.6683658749|0.9169311133|0.9966619199|-0.3448936477|0.8343196339|0.6555627221|-0.7393040562|-0.4346547668|-0.1497005988|0.0705262523|-0.3373411673|0.1884300399|0.1810261737|0.8069217098|0.2928564327|-0.5144418734|-0.806986258|1.2532861538|0.3396097024|0.7883959331|-0.8680487847|-0.1354226381|-0.6486398481|-0.0533617929|-0.9124869617|-0.8222667178|-0.3519129705|0.5778201095|-1.7897113078|1.4015644556|1.6243565992|0.2056623407|-0.0769724182|0.4191888498|0.2125251811|0.2545881145|0.4054102074|0.0556560455|0.1464894841|-0.7148804724|-0.4448485782|0.2316118953|0.5864161651|-0.679673248|-1.3783565993|-0.0849351744|-0.0700464057|0.489026486|-0.1062923227|-1.1047843715|0.1531986115|0.3902350485|-0.6313112897|-0.0710937071|-0.7002862497|-0.3465702996|-3.4234299714|-0.0660501982|-0.3812983055|1.0498931467|2.0714576936|2.2780003332|0.0879396985|-0.4178617109|0.0843525938|1.4423105619|-1.3478164414|0.7532765074|-0.196168936|-1.2493207018|0.0207900208|0.9964797978|0.1832844574|-0.1300869581|-0.6372374744|-0.5115825482|0.8631508749|0.550362037|-1.0606799723|1.6825145246|-0.9143129198|-1.3687958457|-0.4701155447|0|-0.6023249734|0.0065628735|-1.515450249|-0.5035733694|-1.5224237713|0.0788790932|0.1355930337|0.6493483305|-0.0968874893|-0.1346718902|0.1136621958|-6.2638125747|1.5184475667|0.2904285573|0.0022553966|-1.4947018462|-0.3139661984|-0.9940138954|-0.2736207571|0|-0.1007711352|-1.3675331132|0.0884215309|0.5382212332|-0.7770467147|0.6664019754|-0.6854663496|0.1153994102|-0.1914474866|-0.4123028393|0.7405285371|-0.4728132387|-0.1525092472|-0.3795456437|1.2271058772|0.0768118449|-0.199655141|0.160672759|0.0714370758|0.2390854949|1.3922838613|-0.1925264724|0.2592016588|-0.2533115736|-1.1586136333|1.7336464076|-1.5864501243|-1.0648395808|0.0591645959|-0.3792563629|-0.0646746864|-2.5269531997|-0.1189100488|0.629329992|-0.5428791978|-0.1344820297|1.5148133|-0.1120238983|-0.1213174843|-1.2027065441|-0.4047259051|-0.117260788|-1.4124684374|0.1002595125|-0.3971401966|1.7234467453|1.0987063465|0.1106131794|-0.7449464664|0.0338802722|0.1517483046|0.1402360639|0.614778987|-0.7030895337|-0.7330262277|0.2817975336|0.9207347082|0.2230461236|2.1692414884|-0.2765623199|-0.2743102162|-0.5634903397|0.714264857|-0.0373047041|2.1506545332|0.3972656932|0.0360500071|-0.0555979347|-1.8917918517|0.9900823165|0.3090168955|-0.205154507|0.022847382|-0.3556418116|0.9288058643|-0.3656921547|-0.2190494161|0.6990154691|0.870159444|-0.4869226431|-0.2123284227|0.0140587655|-0.0432236394|0.0101545639|-0.2175757009|-0.7349421273|0.0896344686|-0.0829275867|-0.3193015213|1.1336779926|0.0587128457|-1.0434314152|-6.4606713563|-0.0148284137|0.6849658662|-0.7613546863|0.0141561107|0.1058040143|-3.89326427|-0.5738689204|0.2930546597|0.5787420341|-0.1057579318|0.012642225|-1.3233234061|-0.1490182328|-0.3109613889|0.6886622848|0.5520977556|0.4049829069|1.7972415744|-0.0651720541|0.090354642|1.219873958|-0.0126658809|-0.085043053|1.2251140499|-0.0639140994|-0.2461774423|0.0377568517|-1.7586212694|-0.4333596616|-0.7790800001|0.0476425832|0.9250408096|0.5568437529|0.1660787355|-0.1131996399|-1.7603043219|-0.7496798108|0.6919227543|-0.6061149644|0.8930349083|0.2616302774|1.188392275|2.1237487568|-0.2086363568|-0.0251730648|-1.4222828662|-0.3477046145|0.7747384454|-0.5815843011|0.2734995817|-1.5872860603|-1.1196297509|0.0417788298|-1.5836850902|2.1168359539|0.3524644205|0.3236289655|-0.8931963205|-0.3963883423|-0.5660000075|-0.013039355|0.3753640237|0.2439650744|0.5430839348|0.1672580458|0.0677041407|-0.9062913531|-0.6447669785|-0.4520288565|0.1168544402|0.5586568318|-0.4115693405|-0.0094431546|0.0445914996|0.2096436059|0.0384912648|-1.1292508179|-0.3629332719|-1.0044241616|0.2864651879|0.1142567739|0.0141057348|-0.1886368355|-0.4653910609|0.3513836627|-4.2053619951|0.375850605|-0.0909757219|0.6546573355|0.4935491007|-0.5566354479|-0.8661428657|0.0383386582|0.5425452183|0.1277139208|3.3010586067|-0.8647170162|0.3153380423|-0.0471753745|-0.3643596041|1.0733185904|0.9506332972|0.0847252481|0.1061410159|0.9460015737|-1.0587634507|0.202403542|-0.9507951311|2.0883836264|-1.7624735792|0.0821830967|-0.1089326319|-0.318020923|-1.5116668444|0.7698270452|0.0767695378|2.0502825523|1.2445096461|1.5233220069|-0.1427088738|0.7980773959|-0.6591794003|-0.2658068839|0.7513180741|-0.9646483346|0.7429859733|-0.3285807748|-0.6480274668|0.9512372212|-0.0770317113|0.0705788506|-0.2602010644|0.0477897252|0.0791661168|0.8706152999|-0.3806557235|1.1832585311|0.5004607152|0.1313746566|0.2167609942|-0.0505178075|0.3196289276|0.1293459973|0.1351351351|-0.8443506096|-0.3084153281|0.5787240592|-0.2967203241|0.5593264053|-1.3523300112|0.0964203929|-0.1695787305|-0.1327749086|-0.144906727|-0.7693515019|-1.9555662145|-0.4373343716|0.0994035785|0.5919773811|-1.1913804206|-0.082392576|-0.0878624324|-1.2819230036|-2.1819799327|2.0588239222|-0.4609747547|0.6457711398|-0.1346896554|-0.2650410813|0.0656340247|0.0479836996|0.5144941523|0.1113172542|-3.305606371|-0.8722866558|0.1146204787|0.3646968956|0.9673211675|2.2160327201|-0.1081120326|0.1921459338|0.2544084685|-0.5968916115|0.6546599147|0.1230920728|-0.6201148102|-0.3712238492|-0.1988020485|-0.210354096|-0.5413667001|0.0668598172|2.6706942347|-0.149135806|-1.1923487179|0.1018978474|1.7241594279|-2.7341699983|0.5511121561|3.692270228|0.4025864999|-1.0192730595|-0.402995756|-1.7947786495|-0.9357820519|-0.3578228552|0.6860302942|-0.202501489|0.7969493644|-1.0155926344|-0.1018582462|0.0196782732|-0.0154257065|0.0887311446|0.8833415841|-0.3710155579|1.6690896752|-0.2090857293|-0.0119617224|-0.613354825|-1.0605498298|0.548559927|-0.7397249905|0.0093040866|-0.8562320666|-1.8302470204|0.2028866578|3.0332339195|-0.9275497938|-0.5656528189|0.2841227874|-0.6476561954|-0.2885016602|0.1978630787|-0.183227625|0.2975220636|-0.6135244785|-0.4451641195|-0.4682392437|-0.3771472072|1.3310609291|-0.1482579689|0.0656987751|-0.0475330354|-0.3321282308|-0.4445553088|-0.0300430881|0.3227055634|-0.3061046003|-0.0231882918|-0.181780503|-0.3957088297|-0.4079627976|0.1083963023|0.0130208333|-0.042356513|0.0124641654|-0.5906554557|0.2505667581|0.2265575833|-0.0116863386|-1.3998224823|-0.5995305822|-0.79157469|-0.727105469|0.6205973966|-0.3002329208|0.2883687322|1.1054135371|0.2207505517|0.2237136466|-0.4207573633|-0.4883258553|0.1118290258|-0.0805369127|1.140066734|-0.2607320999|-0.1265778769|-0.13468838|-0.8482685759|0.2127659574|-0.2055234425|-0.9236176959|-0.2845708913|0.0206589509|0.6811914578|-0.5396825533|2.787997924|-0.6003511926|0.2039074524|0.2277552002|-0.1165097068|-0.1977813075|0.2658271899|-0.1844716169|0.0049033526|0.6836940219|-0.1354171034|-0.7887390263|0.0599017611|1.2432243774|-1.6222254651|0.1557251537|-1.0733460417|-0.2407428636|-0.7187595865|-0.0157922421|2.0995410226|1.4232790815|-0.1229105211|-0.2469116381|0.2436469667|2.3708859317|-0.0333809422|-0.204819277|-0.2067064768|0.7210641819|-0.2317510675|0.0865514911|1.66580157|-0.135271894|-0.1360174102|0.7600829761|-0.6490954995|-0.0539945755|1.2328224933|-0.8153550467|2.2569481304|-0.7030971876|0.227656582|0.0538635738|-4.4104055899|2.2415059165|-2.2011714097|0.1413432336|0.6677304137|0.2171527845|0.0808314087 | dt4 | ||||||||||||||
DTXSID3031864 | 1763-23-1 | Perfluorooctanesulfonic acid | TOX21_ERa_BLA_Agonist_ratio | 43 | 2.07675760930659 | poly1 | 0.217043754771889 | 1.23034007274665 | 0.00563434086593747 | -0.315886164706897 | 2.50607543243183 | 0.0413692779125863 | -900.236923122482 | 0 | 39.9999999999997 | 0.450747269274994 | 0.0500000000000001|0.00500000000000001|7|0.0500000000000001|0.1|3|0.0500000000000001|0.00199999999999999|0.0199999999999999|0.01|29.9999999999998|0.001|79.9999999999993|0.00500000000000001|3|1|29.9999999999998|0.1|0.00500000000000001|0.00500000000000001|0.3|0.600000000000001|0.3|0.3|0.600000000000001|0.0500000000000001|0.00199999999999999|29.9999999999998|0.001|0.1|0.0500000000000001|7|3|0.600000000000001|0.0500000000000001|0.0199999999999999|0.00199999999999999|1|0.3|0.0199999999999999|0.00199999999999999|1|0.0199999999999999|0.0500000000000001|1|0.0199999999999999|0.001|79.9999999999993|0.00500000000000001|19.9999999999999|0.3|3|0.00199999999999999|0.3|1|0.600000000000001|19.9999999999999|0.0500000000000001|0.00199999999999999|0.00199999999999999|0.1|29.9999999999998|0.1|0.1|0.3|0.0199999999999999|0.001|19.9999999999999|0.600000000000001|0.0500000000000001|0.0199999999999999|3|1|0.3|0.0199999999999999|29.9999999999998|0.001|0.3|0.1|0.01|0.001|0.600000000000001|0.01|0.0199999999999999|0.00199999999999999|0.3|19.9999999999999|19.9999999999999|3|0.600000000000001|0.01|0.3|3|0.00199999999999999|0.600000000000001|7|7|0.600000000000001|7|0.1|0.600000000000001|0.001|0.1|0.3|0.001|0.001|0.600000000000001|0.0199999999999999|1|0.600000000000001|0.01|19.9999999999999|7|0.600000000000001|0.3|7|0.0199999999999999|0.001|0.001|0.0500000000000001|19.9999999999999|0.0500000000000001|0.00199999999999999|7|79.9999999999993|79.9999999999993|0.01|0.01|0.3|29.9999999999998|0.00500000000000001|7|0.600000000000001|0.1|79.9999999999993|79.9999999999993|7|0.3|19.9999999999999|19.9999999999999|0.3|0.01|79.9999999999993|0.0199999999999999|1|1|0.600000000000001|0.1|7|79.9999999999993|0.1|3|29.9999999999998|0.01|19.9999999999999|29.9999999999998|0.1|0.0500000000000001|0.00500000000000001|79.9999999999993|0.3|0.00500000000000001|0.01|0.001|0.1|7|7|0.600000000000001|79.9999999999993|0.00500000000000001|0.1|0.600000000000001|0.001|0.01|1|1|0.3|3|0.0500000000000001|0.01|79.9999999999993|0.0500000000000001|0.1|79.9999999999993|79.9999999999993|0.01|0.3|0.3|0.0199999999999999|0.00500000000000001|7|3|0.0500000000000001|0.1|3|79.9999999999993|19.9999999999999|79.9999999999993|0.01|7|0.0199999999999999|0.001|0.00199999999999999|29.9999999999998|0.3|0.00500000000000001|0.00500000000000001|0.1|19.9999999999999|0.00199999999999999|0.00199999999999999|79.9999999999993|0.0500000000000001|1|3|1|0.1|7|79.9999999999993|0.1|0.00500000000000001|29.9999999999998|0.01|0.600000000000001|0.600000000000001|79.9999999999993|0.0500000000000001|3|7|0.0500000000000001|0.600000000000001|19.9999999999999|0.00500000000000001|7|19.9999999999999|0.0500000000000001|0.0199999999999999|79.9999999999993|29.9999999999998|0.1|0.00199999999999999|0.00500000000000001|0.0500000000000001|0.0500000000000001|1|1|0.3|29.9999999999998|0.00199999999999999|0.0500000000000001|0.01|79.9999999999993|0.00500000000000001|0.600000000000001|0.3|0.1|0.00199999999999999|1|3|0.0199999999999999|7|0.00500000000000001|0.01|29.9999999999998|0.01|0.0199999999999999|79.9999999999993|29.9999999999998|0.3|0.00500000000000001|0.1|0.1|29.9999999999998|0.00199999999999999|0.00199999999999999|1|0.0199999999999999|0.0500000000000001|1|29.9999999999998|7|3|0.00500000000000001|1|0.01|0.0500000000000001|0.001|19.9999999999999|0.1|0.00199999999999999|0.00199999999999999|0.0500000000000001|7|0.001|0.001|29.9999999999998|0.0199999999999999|0.600000000000001|29.9999999999998|0.3|0.0500000000000001|3|7|0.0500000000000001|0.00199999999999999|19.9999999999999|0.00500000000000001|0.01|0.01|29.9999999999998|0.0199999999999999|1|3|79.9999999999993|0.0199999999999999|7|29.9999999999998|19.9999999999999|0.0500000000000001|0.001|79.9999999999993|0.0199999999999999|0.0199999999999999|0.600000000000001|0.3|0.1|19.9999999999999|0.001|0.0199999999999999|0.00500000000000001|29.9999999999998|0.00199999999999999|0.01|0.1|0.0500000000000001|0.001|0.600000000000001|1|29.9999999999998|1|0.00199999999999999|0.00500000000000001|19.9999999999999|0.00500000000000001|0.01|29.9999999999998|19.9999999999999|0.1|0.00199999999999999|0.0500000000000001|0.0500000000000001|19.9999999999999|0.001|0.001|0.600000000000001|0.01|0.0199999999999999|0.600000000000001|19.9999999999999|3|29.9999999999998|0.00199999999999999|0.3|0.00500000000000001|0.0199999999999999|3|7|0.0500000000000001|0.001|0.001|0.0199999999999999|1|79.9999999999993|3|19.9999999999999|0.01|0.01|19.9999999999999|0.1|0.0199999999999999|1|3|79.9999999999993|0.001|7|0.00199999999999999|0.00500000000000001|0.00500000000000001|0.01|0.01|0.600000000000001|0.3|3|29.9999999999998|0.00199999999999999|19.9999999999999|7|0.0199999999999999|79.9999999999993|1|0.01|0.3|0.01|0.1|0.0500000000000001|7|19.9999999999999|79.9999999999993|0.00199999999999999|19.9999999999999|0.001|0.00500000000000001|0.0500000000000001|0.0199999999999999|0.3|0.3|0.600000000000001|19.9999999999999|0.600000000000001|0.001|0.00199999999999999|7|3|0.00500000000000001|0.00199999999999999|7|0.0500000000000001|0.001|0.0199999999999999|0.0199999999999999|7|79.9999999999993|3|79.9999999999993|0.00500000000000001|0.01|0.01|7|1|19.9999999999999|0.001|0.1|79.9999999999993|0.01|1|3|0.0199999999999999|0.3|29.9999999999998|0.01|0.3|3|0.600000000000001|7|0.00500000000000001|0.00500000000000001|7|0.3|0.01|0.600000000000001|0.3|29.9999999999998|19.9999999999999|0.00199999999999999|0.001|0.00199999999999999|0.00199999999999999|0.00500000000000001|0.00500000000000001|0.3|0.1|0.01|19.9999999999999|0.001|7|3|79.9999999999993|3|29.9999999999998|0.00500000000000001|0.1|0.00500000000000001|0.0500000000000001|0.0199999999999999|7|3|0.001|7|79.9999999999993|0.00199999999999999|0.0199999999999999|0.01|0.1|0.1|0.01|7|0.3|29.9999999999998|0.001|1|79.9999999999993|0.00199999999999999|0.001|3|0.0199999999999999|0.3|0.01|0.01|1|3|0.600000000000001|29.9999999999998|79.9999999999993|0.00500000000000001|0.00500000000000001|3|0.600000000000001|7|79.9999999999993|0.0500000000000001|1|0.00500000000000001|0.600000000000001|1|0.01|0.1|19.9999999999999|0.00500000000000001|0.1|0.600000000000001|0.3|0.00199999999999999|0.00199999999999999|0.00199999999999999|1|0.1|0.00500000000000001|0.3|0.1|19.9999999999999|7|0.001|79.9999999999993|0.001|0.001|0.00199999999999999|3|0.1|0.0500000000000001|0.00500000000000001|7|0.600000000000001|0.3|1|3|0.600000000000001|19.9999999999999|3|29.9999999999998|29.9999999999998|1|79.9999999999993|0.0500000000000001|0.00500000000000001|3|0.1|19.9999999999999|79.9999999999993|0.0500000000000001|1|0.001|29.9999999999998|0.00199999999999999|0.00199999999999999|1|79.9999999999993|1|3|0.0199999999999999|29.9999999999998|3|79.9999999999993|0.001|0.600000000000001|0.0500000000000001|3|29.9999999999998|29.9999999999998|0.0199999999999999|0.001|79.9999999999993|0.1|0.600000000000001|29.9999999999998|29.9999999999998|7|1|19.9999999999999|19.9999999999999|3|29.9999999999998|0.0199999999999999|0.00199999999999999|1|0.0500000000000001|7|3|0.0199999999999999|29.9999999999998|19.9999999999999|19.9999999999999|0.001|0.001|0.600000000000001|3|0.600000000000001|0.600000000000001|0.01|19.9999999999999|1|29.9999999999998|29.9999999999998|0.0199999999999999|0.0199999999999999|1|19.9999999999999|19.9999999999999|0.3|79.9999999999993|1 | 1.1509687721|0.0884061631|-0.054054054|0.095705086|1.5166330663|-1.1646744921|0.0440319057|0.0520690032|-0.1979457591|4.012335426|0.4779876715|-0.5362788123|3.3381480446|0.0905837231|0.2503887927|0.0648676699|-0.590048102|-0.7875616069|-0.5148409991|-0.0241604252|-0.0720980534|-0.1477898696|0.2157864849|0.1743058926|-0.01837495|0.1443444936|0.0130022103|0.1044250097|-0.6287076669|0.7640015264|0.144929583|-1.1310870341|0.0125517761|-0.1097857212|-0.3040600833|-1.8652729093|0.3948163214|-1.29090208|-0.2477724863|-0.3229665072|-0.4567901234|0.4851496864|-1.1770351266|0.8038838118|0.0092756085|0.6302721667|0.3206589399|0.0152207|4.2594165664|0.1120474452|0.2191565855|1.7536458653|0.2760426832|0.1198126403|0.2811574082|1.0835305311|-0.0540858092|-0.5028300073|-0.1407294476|-1.0718057868|-0.565302738|-0.1827437671|-0.150331256|-0.2382370459|0.7948744503|-0.49592441|0.1277955271|0.7711734995|4.185305851|1.3293452218|-1.0758851175|-0.3161485618|0.2726719549|0.0107053365|-0.2739128387|-0.1163725557|-0.4060115734|-0.494965114|-0.7226310618|0|0.0790990019|0|-0.9290014856|0.3060710359|1.5325673139|0.29264484|-0.7287298491|0.128978046|1.206425047|-2.8501964917|-0.3361902763|2.1877801605|-0.5825509067|0.576113876|0.0950442816|0.1531934951|-0.0395830584|1.9775262244|-0.7545715737|0.0349813433|-1.0332781761|-0.2283527341|-1.024609741|1.154359563|-1.7659389655|0.2735689642|0.0462122247|0.6548737437|-0.7738669727|0.6629240876|-0.1220953742|-0.2789171928|-0.6245278753|1.6744426284|-0.8031083097|0.3813819579|-0.5411738859|-1.3595727122|0.0255591054|0.8230398553|-1.0327661971|0.0232018561|-0.229876504|-0.0875656742|-0.5201884949|-0.0762769754|-0.1649970535|-0.7165248543|-0.080878105|0.750845136|-0.0235876872|-0.7328083339|2.0022373571|2.394963228|0.5108524592|4.8113763147|-0.0785854615|-1.2868263953|0.554751176|-1.1547546069|-0.1791170583|0.4967822061|-0.7399314517|-0.0174916913|0.1360174102|-0.5640423031|0.0739826943|0.9421257446|-1.1212965102|0.0139054236|0.4151961801|-0.0364482223|0.2683749979|0.0045671563|10.4560591545|-0.1897533206|0.0044607787|-0.9723917587|1.4630227038|3.2823960917|0.5711079311|0.086628479|0.4320594592|0.5304736727|-0.3606388318|-1.4435922116|0.0891606165|0.3120026212|-1.0012238112|0.8948983532|0.2698225095|-0.0276310144|-0.1536098309|-0.0898818695|-0.2370056817|-0.0470949457|-0.1470712507|-0.7044627509|0.0127050808|-0.2485089462|1.5005582522|-1.3707446797|1.8974821219|4.4770509501|0.0304783927|0.1587204989|-1.083672119|0.034662045|2.8970051728|0.5259806709|-0.103662817|-0.1668784581|0.3479812668|1.6159226887|0.7674301891|1.5212089771|2.1622184412|1.7694975365|0.091954023|-0.1833660772|-0.5818554576|-0.0123823675|2.2497782626|-0.4354246753|0.0445696943|3.8330353513|-0.8872538412|-0.4576659038|-0.8345065219|0.1432402027|0.0223260135|0.6990206176|1.2239535634|-1.3455194228|0.1545446457|0.0680094683|-0.5813136531|-0.0157535765|-1.9740847868|-0.3840564666|0.0147391799|0.9862420646|-0.2798106439|0.4295684053|-1.1370436864|-0.3242477004|1.5228939317|-0.5742960136|-0.0973980799|-0.1272810755|-0.9822115069|-0.0770366548|0.0538213132|-1.2618922371|0.1439326837|-0.8652958209|-0.2557291167|-1.8617658079|1.9775077485|0.0636780438|0.7293274292|1.6733978223|-5.1733824251|0.1976196347|1.0919251794|-0.4419431002|0.9145226547|1.3526275808|1.5296336273|0.7177692441|-0.2269371217|-0.5752678486|0.3788835563|0.6950433107|0.667044727|1.5878957182|-0.8773079348|-0.2690699816|0.3984079477|1.8731794141|-0.3783783783|-0.0447179472|-0.7991207621|-2.161728406|-0.1312436472|-1.878680668|3.3615911898|-0.1604752479|0.3963011888|-1.0122658732|-0.9328861033|0.5766789731|-0.1138824652|0.0861220471|-0.7265621343|-0.0494193229|0.097695117|1.236406564|-2.1350083852|0.0706214689|0.0686734576|-0.6812712478|-0.325065351|-0.3822381521|-0.0534145426|-0.2323514183|-0.7094426498|0.9920200815|0.2742588481|0.6518586516|-0.7162842752|0.6497273466|-1.3335701213|0.074784993|-0.80353843|0.0096070708|0.1052493093|-1.6829932027|0.6988505101|-1.0534598762|-1.4815195525|0.6915043229|-0.1552620468|0.2360742834|0.9184776062|0.1500554166|0.1763356835|-1.2226137457|0.0783699059|1.5595840662|-0.8347939933|-0.4844602106|0.083534161|0.9514783683|1.5316767075|2.9166732867|-0.08317741|1.8015439459|0.2133266407|-0.3964765392|3.1662443778|2.6838853233|0.1449413017|-2.1289361173|0|0.0820176337|1.767816575|0.9257784414|0.06711425|-0.3289834412|0.080385852|-0.1181584235|0.68580097|-0.0915331808|1.6760031257|-0.2297404138|-0.305642381|-1.6190790228|1.2056008916|-0.0399099533|0.5730349226|-0.4443429302|0.1224677418|-0.2882301305|-2.037486269|-0.6119683645|-0.013065064|0.2211189586|1.5128633488|-0.5200453277|-0.249689677|-0.2891844997|2.4332699469|-0.0212107528|0.0122986103|1.2810722626|-2.0498476253|-0.5883694609|1.7033215967|0.0667779632|0.0596018595|-0.5154873629|-1.3063659559|-0.0605540279|0.1523610609|-2.9020912503|0.9661868867|0.4514363884|-0.2432498176|-0.5813290779|-0.8464055976|-0.1382644756|-1.8275118447|0.9888609874|0.6835724169|1.1761042079|-0.7158611156|-0.2799582941|0.5739164961|1.1064417835|-0.2945831354|-0.5010211653|1.4478103979|-0.2053450888|1.2636447253|0.2704484944|0.1342778761|0.5612158502|0.0602409637|-0.2331861469|-1.1755064378|-1.1557143224|-0.2180817283|0.1721664275|-0.1479289941|1.4733831749|2.4711567401|0.0905482676|2.8262793346|0.0084850429|-1.0113125111|-0.0746825988|0.2270566335|-0.1754899093|0.1446501928|-0.9250833018|0.9755678267|0.5958291956|0.3892312683|-0.1455780662|0.806701355|0.5998902366|-0.0464090962|-0.1206926528|0.3204913713|0.4563295065|-0.0802806124|1.9073080323|0.2936525864|-0.086376557|-1.2821304145|0.3875499576|0.0865930365|-0.6660453915|-1.1586742924|1.00570963|0.123119015|-0.0557793977|-0.1494509476|0.1955110908|-0.0269978401|1.5413140117|-0.0971156648|2.6987827956|-1.3022085823|1.0152088509|0.8191807219|0.4851855207|0.2852213114|-0.4184007273|-0.2969442838|-0.2752835657|-0.4931905429|1.6313987127|-0.0863984201|0.4832745085|-0.1844775333|-1.0194934759|0.0843348092|0.150788211|-0.2696348643|-0.106559318|1.6896684126|0.6376834737|-0.8949523091|-1.564233955|0.031196142|3.300974632|2.6568555571|-0.0144480841|-1.2872035401|-0.3337704136|-3.6533893905|-0.4289768316|0.786274069|-0.9331228504|-0.7244091165|-0.7535566461|-0.710662361|-0.8182083393|-0.5723829705|0.2942091348|0.3864533953|4.0393171368|0.9606344674|1.6672764315|2.1738682412|-0.5426879393|-0.0119531436|1.7293874889|0.973159366|0.3563842834|-0.2911813644|-1.2712003028|-0.8426898656|-0.0631047539|0.2934868495|0.2087375548|0.0127388535|-0.2979365385|-0.5966484466|0.7189269904|1.2452620407|0|0.4784864397|0.6886205857|0.0189520203|2.6725545306|0.0648145276|-0.5300353355|7.5507857123|-1.4155611162|0.0779601883|0.9327883168|-0.0395309|-0.3497524042|-0.6843512967|0.584934255|-0.4962788736|1.7237904332|-0.3026435898|0.6414421155|2.3112507901|0.8078737601|0.1250219019|0.8369571707|-0.608311489|-1.949782164|0.0415295193|0.9075568875|1.114260439|0.5815841661|-0.0041571478|0.2180692833|-0.0385208012|0.0853727946|0.4096545615|0.0349311955|0.2916712514|0.1746607549|0.7838967501|2.9527505563|0.7783813758|0.1721714922|-0.4400814944|-0.4851157662|-0.7721195979|0.248685594|0.0518268982|0.0959577785|0.212708538|0.8003913134|3.0258433064|-1.0761719654|-1.2200974507|0.0641436819|-1.2042136696|-0.4101202288|1.2382881897|0.0549685643|-1.1830985996|0.4239334549|1.5800848585|2.1470014398|0.1494540891|0|-0.3086554534|-0.228176429|0.0126502213|0.0127926314|-0.1028959071|-1.1233758609|-0.155353553|0.2306805074|1.6009426441|-0.6141658057|0.3778925967|0.6000900522|0.6025512371|-0.4360758929|-0.0210913967|-0.264871427|-0.6208625918|-1.8638816047|-0.6605614109|-0.3106332138|-0.0235017626|-0.1327629444|0.02528445|0.5636275136|2.3198553083|-0.9364674902|-0.5280968974|-0.2555553869|0.10010732|0.0616431527|0.0012098627|-0.4695366563|0.3660466956|0.0256443133|-0.019078508|0.2511528313|1.5836095282|1.1965235992|0.3797394926|-0.1061946902|-0.461273288|-0.3701737965|0.1260875047|1.9488663999|-3.0849566328|0.087087387|0.648587349|1.3669472127|0.1173941546|0.3139521408|0.1002506265|9.2146662895|1.8115530495|-0.1135710471|0.1725614599|0.203087689|0.9266401002|0.2882234654|-0.8175355449|0.336956682|0.4899148483|0.0601283538|-1.1243871226|3.4042695145|0.3436655342|0.334078942|0.0395726157|0.4081169935|-0.9763227127|-0.0389190561|-0.4939126182|-0.058460542|-1.5964333551|0.1635873749 | dt4 |
One can also pass output from tcplhit2_core
directly to
concRespPlot2
to plot the best model fit, as shown in Concentration-Response Modeling for a Single Series with
concRespCore
.
The hidden code below demonstrates modeling a single row/result
and plotting the winning model with concRespPlot2
, along
with a minor customization using ggplot2
layers.
# plot the first row
concRespPlot2(result_table[1,],log_conc = TRUE) +
# add a descriptive title to the plot
ggtitle(paste(result_table[1,"dtxsid"], result_table[1,"name"]))
Figure 3: Concentration-response data and the
winning model fit for Bisphenol A using the concRespPlot2
function. Concentrations (x-axis) are displayed in \(\mathbf{log_{10}}\) units.
Further details on hitcalling are provided in a later section Hitcalling.
Concentration-Response Modeling for tcpl
-like data
without a database connection
The tcplLite
functionality was deprecated with the
updates to tcpl
and development of tcplfit2
,
because tcplfit2
allows one to perform curve fitting and
hitcalling independent of a database connection. The example in this
section demonstrates how to perform an analysis analogous to
tcplLite
with tcplfit2
. More information on
the ToxCast program can be found at https://www.epa.gov/comptox-tools/toxicity-forecasting-toxcast.
A detailed explanation of processing levels can be found within the Data
Processing section of the tcpl
Vignette on CRAN.
In this example, the input data comes from the ACEA_AR assay. Data from the assay component ACEA_AR_agonist_80hr assumes the response changes in the positive direction relative to DMSO (neutral control & baseline activity) for this curve fitting analysis. Using an electrical impedance as a cell growth reporter, increased activity can be used to infer increased signaling at the pathway-level for the androgen receptor (as encoded by the AR gene). Given the heterogeneity in assay data reporting, source data often must go through pre-processing steps to transform into a uniform data format, namely Level 0 data.
- Source Data Formatting
To run standalone tcplfit2
fitting, without the need for
a MySQL database connection like invitrodb
, the user will
need to step-through/replicate multiple levels of processing (i.e. Level
0 through to Level 3). The below table is identical to the
multi-concentration level 0 data (mc0) table one would see in
invitrodb
and is compatible with tcpl
. Columns
include:
m0id
- Level 0 idspid
- Sample idacid
- Unique assay component id; unique numeric id for each assay componentapid
- Assay plate idcoli
- Column index (location on assay plate)rowi
- Row index (location on assay plate)wllt
- Well typewllq
- Well qualityconc
- Concentrationrval
- Raw response valuesrcf
- Source file nameclowder_uid
- Clowder unique id for source filesgit_hash
- Hash key for pre-processing scripts
The hidden code below demonstrates obtaining the mc0 data file
from invitrodb
, which is saved as an example dataset in the
tcplfit2
R package.
# Loading in the Level 0 example data set from invitrodb
data("mc0")
data.table::setDTthreads(2)
dat <- mc0
Here we show the top six rows of samples with a treatment well type
identifier (i.e. wllt == 't'
).
m0id | spid | acid | apid | rowi | coli | wllt | wllq | conc | rval | srcf | clowder_uid | git_hash |
---|---|---|---|---|---|---|---|---|---|---|---|---|
519762672 | TP0001364A01 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 3 | t | 1 | 0.138 | 3.12223683963748 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx | ||
519762768 | TP0001364A02 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 5 | t | 1 | 0.138 | 3.84260554743345 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx | ||
519762864 | TP0001364A03 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 7 | t | 1 | 0.138 | 4.32871864587724 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx | ||
519762960 | TP0001364A04 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 9 | t | 1 | 0.138 | 4.26783180585688 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx | ||
519763056 | TP0001364A05 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 11 | t | 1 | 0.138 | 4.53262917268075 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx | ||
519763152 | TP0001364A06 | 1829 | Experiment.ID:1502051323HT1_A113641_AP01_RA_P09 | 13 | 13 | t | 1 | 0.055 | 4.53943356408973 | ACEA/source/TO1_800_AR_mc_20141231/1502051323HT1_A113641_AP01_RA_P09.xlsx |
The first step is to establish the concentration index, and
corresponds to Level 1 in tcpl
. Concentration indices are
integer values ranking \(N\) distinct
concentrations from 1 to \(N\), which
correspond to the lowest and highest concentration groups, respectively.
This index can be used to calculate the baseline median absolute
deviation (BMAD) for an assay.
The hidden code chunk below demonstrates how to obtain and assign
the concentration indices using the data.table
package.
# Order by the following columns
setkeyv(dat, c('acid', 'srcf', 'apid', 'coli', 'rowi', 'spid', 'conc'))
# Define a temporary replicate ID (rpid) column for test compound wells
# rpid consists of the sample ID, well type (wllt), source file, assay plate ID, and
# concentration.
# the := operator is a data.table function to add/update rows
nconc <- dat[wllt == "t" , ## denotes test well as the well type (wllt)
list(n = lu(conc)), # total number of unique concentrations
by = list(acid, apid, spid)][ , list(nconc = min(n)), by = acid]
dat[wllt == "t" & acid %in% nconc[nconc > 1, acid],
rpid := paste(acid, spid, wllt, srcf, apid, "rep1", conc, sep = "_")]
dat[wllt == "t" & acid %in% nconc[nconc == 1, acid],
rpid := paste(acid, spid, wllt, srcf, "rep1", conc, sep = "_")]
# Define rpid column for non-test compound wells
dat[wllt != "t",
rpid := paste(acid, spid, wllt, srcf, apid, "rep1", conc, sep = "_")]
# set the replicate index (repi) based on rowid
# increment repi every time a replicate ID is duplicated
dat[, dat_rpid := rowid(rpid)]
dat[, rpid := sub("_rep[0-9]+.*", "",rpid, useBytes = TRUE)]
dat[, rpid := paste0(rpid,"_rep",dat_rpid)]
# For each replicate, define concentration index
# by ranking the unique concentrations
indexfunc <- function(x) as.integer(rank(unique(x))[match(x, unique(x))])
dat[ , cndx := indexfunc(conc), by = list(rpid)]
- Adjustments
The second step is perform any necessary data adjustments, and
corresponds to Level 2 in tcpl
. Generally, if the raw
response values (rval
) need to undergo logarithmic
transformation or some other transformation, then those adjustments
occur in this step. Transformed response values are referred to as
corrected values and are stored in the cval
field/variable.
Here, the raw response values do not require transformation and are
identical to the corrected values (cval
). Samples with poor
well quality (wllq = 0
) and/or missing response values are
removed from the overall dataset to consider in the
concentration-response series.
The hidden code chunk below demonstrates how to assign the
cval
and filter the data as necessary.
# If no adjustments are required for the data, the corrected value (cval) should be set as original rval
dat[,cval := rval]
# Poor well quality (wllq) wells should be removed
dat <- dat[!wllq == 0,]
##Fitting generally cannot occur if response values are NA therefore values need to be removed
dat <- dat[!is.na(cval),]
- Normalization
The third step normalizes and zero-centers data before model fitting,
and corresponds to Level 3 in tcpl
. Our example dataset has
both neutral and negative controls available. The equation below
demonstrates how to normalize responses to a control in this scenario.
However, given experimental designs vary from assay to assay, this
process also varies across assays. Thus, the steps shown in this example
may not apply to other assays and should only be considered applicable
for this example data set. In other applications/scenarios, such as when
neutral control or positive/negative controls are not available, the
user should normalize responses in a way that best accounts for baseline
sampling variability within their experimental design and data. Provided
below is a list of normalizing methods used in tcpl
for
reference.
For this example, the normalized responses (resp
) are
calculated as a percent of control, i.e. the ratio of differences. The
numerator is the difference between the corrected (cval
)
and baseline (bval
) values and denominator is the
difference between the positive/negative control (pval
) and
baseline (bval
) values.
\[
\% \space control = \frac{cval - bval}{pval - bval}
\] The table below provides a few methods for calculating
bval
and pval
in tcpl
. For more
on the data normalization step, refer to the Data Normalization
sub-section in the tcpl
Vignette on CRAN.
mc3_mthd_id | mc3_mthd | desc |
---|---|---|
1 | none | Set the corrected response value (cval) as the normalized response value (resp); cval = resp. No additional mc3 methods needed for endpoint-specific normalization. |
2 | bval.apid.lowconc.med | Calculate the baseline value (bval) as the plate-wise median, by assay plate ID (apid), of the corrected values (cval) for test compound wells (wllt = t) with a concentration index (cndx) of 1 or 2. |
3 | pval.apid.medpcbyconc.max | Calculate the positive control value (pval) as the plate-wise maximum, by assay plate ID (apid), of the medians of the corrected values (cval) for gain-of-signal single- or multiple-concentration negative control wells (wllt = m or o) by apid, well type, and concentration. |
4 | pval.apid.medpcbyconc.min | Calculate the positive control value (pval) as the plate-wise minimum, by assay plate ID (apid), of the medians of corrected value (cval) of gain-of-signal single- or multiple-concentration positive control wells (wllt = p or c) by apid, well type, and concentration. |
5 | resp.pc | Calculate the normalized response (resp) as a percent of control, i.e. the ratio of the difference between the corrected (cval) and baseline (bval) values divided the difference between the positive control (pval) and baseline (bval) values multiplied by 100; resp = (cval-bval)/(pval-bval)*100. |
6 | resp.multneg1 | Multiply the normalized response value (resp) by -1; -1*resp. |
The hidden code chunk below demonstrates how to perform the
normalization described above and assign values as is done in
tcpl
.
# calculate bval of the median of all the wells that have a type of n
dat[, bval := median(cval[wllt == "n"]), by = list(apid)]
# calculate pval based on the wells that have type of m or o excluding any NA wells
dat[, pval := median(cval[wllt %in% c("m","o")], na.rm = TRUE), by = list(apid, wllt, conc)]
# take pval as the minimum per assay plate (apid)
dat[, pval := min(pval, na.rm = TRUE), by = list(apid)]
# Calculate normalized responses
dat[, resp := ((cval - bval)/(pval - bval) * 100)]
Before model fitting, we need to determine the median absolute
deviation around baseline (BMAD
) and baseline variability
(onesd
), which are later used for cutoff and benchmark
response (BMR
) calculations, respectively. This is part of
Level 4 processing in tcpl
. In this example, we consider
test wells in the two lowest concentrations as our baseline to calculate
BMAD
and onesd
.
BMAD
can be calculated as the median absolute deviation
of the data in control wells too. Check out other methods of determining
BMAD
and onesd
used in tcpl
.
mc4_mthd_id | mc4_mthd | desc |
---|---|---|
1 | bmad.aeid.lowconc.twells | Calculate the baseline median absolute value (bmad) as the median absolute deviation of normalized response values (rep) for test compound wells (wllt = t) with concentration index (cndx) equal to 1 or 2. Calculate one standard deviation of the normalized response for test compound wells (wllt = t) with a concentration index (cndx) of 1 or 2; onesd = sqrt(sum((resp - mean resp)^2)/sample size - 1). Onesd is used to establish BMR and therefore required for tcplfit2 processing. |
2 | bmad.aeid.lowconc.nwells | Calculate the baseline median absolute value (bmad) as the median absolute deviation of normalized response values (resp) for neutral control wells (wllt = n). Calculate one standard deviation of the normalized response for neutral control wells (wllt = n); onesd = sqrt(sum((resp - mean resp)^2)/sample size - 1). Onesd is used to establish BMR and therefore required for tcplfit2 processing. |
4 | bidirectional.false | Limits bidirectional fitting and processes data in positive analysis direction only. Use for gain-of-signal or inverted data. |
5 | bmad5.onesd16.static | Replace baseline median absolute deviation (bmad) with 5 and one standard deviation (osd) of the normalized response for test compound wells (wllt = t) with a concentration index (cndx) of 1 or 2 with 16. Typically used for binary data where values would otherwise be 0; non-zero values are required for tcplfit2 processing. |
6 | no.unbounded.models | Exclude unbounded models and only fit data to bounded models (hill, gnls, exp4 and exp5). |
If the user’s dataset contains data from multiple assays
(aeid
), BMAD
and onesd
should be
calculated per assay/ID. The example data set only contains data from
one assay, so we can calculate BMAD
and onesd
on the whole dataset.
The hidden code chunk below demonstrates how to perform
BMAD
and onesd
estimation from the two lowest
experimental concentrations across all treatment wells for a given assay
endpoint (as done in tcpl
).
- Dose-Response Curve Fitting
Once the data adjustments and normalization steps are complete, model
fitting and hitcalling can be done, similar to what was shown in Concentration-Response Modeling for Multiple Series with
tcplfit2_core
and tcplhit2_core
.
Dose-Response Curve Fitting corresponds to Level 4 in tcpl
.
This is where tcplfit2
is used to fit all available models
within tcpl
.
Here we set up a function for running our default model fitting approach and necessary arguments for our analysis.
#do tcplfit2 fitting
myfun <- function(y) {
res <- tcplfit2::tcplfit2_core(y$conc,
y$resp,
cutoff = 3*bmad,
bidirectional = TRUE,
verbose = FALSE,
force.fit = TRUE,
fitmodels = c("cnst", "hill", "gnls", "poly1",
"poly2", "pow", "exp2", "exp3",
"exp4", "exp5")
)
list(list(res)) #use list twice because data.table uses list(.) to look for values to assign to columns
}
Once the fitting funcion is set up, one can perform dose-response
modeling for all spid
’s in the dataset. Warning:
The fitting step on the full data set, dat
, can take 7-10
minutes with a single core laptop.
The hidden code chunk below demonstrates how to curve fit the full example dataset, but is not executed.
# only want to run tcplfit2 for test wells in this case
# this chunk doesn't run, fit the curves on the subset below
dat[wllt == 't',params:= myfun(.SD), by = .(spid)]
However, to demonstrate what the results will look like we execute the curve fitting on an example subset of the data, which only contains records of six samples.
# create a subset that contains 6 samples and run curve fitting
subdat <- dat[spid %in% unique(spid)[10:15],]
subdat[wllt == 't',params:= myfun(.SD), by = .(spid)]
Similar to the earlier example Concentration-Response
Modeling for Multiple Series with tcplfit2_core
and
tcplhit2_core
one can combine the general hitcalling
approach of using the tcplhit2_core
function with the
generalized function creation (shown above) to apply hitcalling to the
example dataset. This will be further demonstrated in a later section,
see Consideration: Continuous Hitcalls to Activity
Calls.
Hitcalling
After all models are fit to the data, tcplhit2_core
is
used to perform hitcalling, which corresponds to Level 5 in
tcpl
. The continuous hitcall value (hitc
) is
the product of three proportional weights, and the resulting continuous
value is between 0 and 1. The definition of each proportional weight is
provided in the following subsections. For further details on the
proportional weights not provided here we suggest the reader to see
Sheffield et al., 2021 for more information on tcplfit2
hitcalling.
- \(p_1\): AIC Weight
“the winning AIC value is less than that of the constant model”
Determine whether the constant model – if it were allowed to win – is
a better fit to the observed data than the winning model – i.e., is the
winning model essentially flat or not. The constant model can never be
selected as the winning model, but if the constant model has the lowest
AIC compared to other models, the calculated continuous
hitc
will be zero.
When aicc
is FALSE
, default, \(p_1\) is calculated as:
\[ p_1 = 1 - \frac{exp(0.5*AIC_{constant})}{exp(0.5*AIC_{constant})+exp(0.5*AIC_{winning})}\] Otherwise, the corrected AICs (i.e. \(AIC_c\)) for the constant and winning model are used. \(p_1\) with the corrected AIC values is estimated as:
\[ AIC_c= AIC + \frac{2+df*(df+1)}{n-df-1}\]
where \(df\) is the model’s degrees of freedom and \(n\) is the number of observed responses.
- \(p_2\): Responses Outside Cutoff
“at least one median response is outside the cutoff band”
At least one dose group has a median response value (central tendency of observed responses within the dose group) “outside” the cutoff band (when considering bi-directional fitting). Responses greater than the cutoff in the positive (“+”) direction and less than the cutoff in the negative (“–”) direction.
To estimate whether the median response values for the experimental concentration/dose groups are outside the cutoff band we first obtain a ‘scaled’ median response (\(y_k^*\)) value for each experimental dose/concentration group \(k\):
\[ y_k^* = \frac{y_k-sign(top)*cutoff}{exp(err)} \]
where \(y_k\) is the median of observed responses for experimental concentration/dose group \(k\), \(sign(top)\) is the sign (either positive or negative) of the maximal predicted response from baseline, \(cutoff\) is the user defined response threshold indicating meaningful biological activity, and \(err\) is the model error parameter.
When assuming the responses follow a t-distribution, default, \(p_2\) is calculated as:
\[ p_2 = 1 - \prod_{k=1}^{D}y_k^* \sim t(df = 4)\] Alternatively, when assuming the responses follow a normal distribution, \(p_2\) is calculated as:
\[ p_2 = 1 - \prod_{k=1}^{D} y_k^* \sim N(0,1) \]
where \(D\) is the total number of experimental concentration/dose groups.
- \(p_3\): Top Likelihood Ratio
“the top of the fitted curve is outside the cutoff band”
Determine whether the predicted maximal response from baseline
(top
) exceeds the cutoff, i.e. the response corresponding
to the effect size of interest is outside the cutoff band (less than
cutoff in the negative direction and greater than cutoff in the positive
direction). \(p_3\) is estimated
as:
\[ p_3 = \frac{1 \pm \chi_2(2*(MLL-LL),1)}{2} \] where \(MLL\) is the maximum log-likelihood of the original predicted best fit model, \(LL\) is the log-likelihood of the re-scaled predicted best fit model, and the \(\pm\) is:
- “+” when \[ \mid top \mid \geq \mid cutoff \mid \]
- “-” when \[ \mid top \mid < \mid cutoff \mid \]
Visual Representation of Proportional Weights
The following plots provide visual representations for the comparisons conducted in each of the proportional weights that make up the continuous hitcall value. Each figure has one item “highlighted” in blue and another “highlighted” in red. The blue represents the reference for the proportional weight of interest, whereas the red represents an indicator for a response with potential bioactivity (i.e. key comparator) for the proportional weight of interest. For example, for \(p_1\) which (as mentioned previously) is meant to determine whether the winning model (red), which is the best fit curve to the observed data given it has the lowest AIC, is much different from the constant model (blue), which indicates no biological response.
#### Data Set-Up ####
# obtain the base example data
DATA_CASE <- tcplfit2::signatures[1,]
conc <- strsplit(DATA_CASE[,"conc"],split = "[|]") %>%
unlist() %>% as.numeric()
resp <- strsplit(DATA_CASE[,"resp"],split = "[|]") %>%
unlist() %>% as.numeric()
OG_data <- data.frame(xval = conc,yval = resp) %>%
# obtain the concentrations that are outside the cutoff band
dplyr::mutate(type = ifelse(abs(resp)>=abs(DATA_CASE[,"cutoff"]),"Extreme Responses",NA)) %>%
mutate(.,df = "OG_data")
# obtain the fit and best fitting/hitcalling information
fit <- tcplfit2::tcplfit2_core(conc = conc,resp = resp,
cutoff = DATA_CASE[,"cutoff"])
hit <- tcplfit2::tcplhit2_core(params = fit,
conc = conc,resp = resp,
cutoff = DATA_CASE[,"cutoff"],
onesd = DATA_CASE[,"onesd"])
# obtain the continuous curve from fit information
XC <- seq(from = min(conc),to = max(conc),length.out = 100)
YC <- tcplfit2::exp4(x = XC,ps = unlist(fit$exp4[fit$exp4$pars]))
# set up a continuous curve dataset
cont_fit <-
# best fit
data.frame(xval = XC,yval = YC,type = "Best Fit") %>%
# constant (flat) fit
rbind.data.frame(data.frame(xval = XC,yval = rep(0,length(XC)),type = "Constant Fit"))
## prop weight 3 - continuous curve dataset addition ##
# set up temporary data needed for re-scaling plot
tmp_cutoff <- DATA_CASE[,"cutoff"] # cutoff value
tmp_top <- fit$exp4$top # maximal predicted response from baseline
tmp_ps <- unlist(fit$exp4[fit$exp4$pars]) # model parameters
# code from toplikelihood.R lines 51-56 for the "exp4" model
if (tmp_top == tmp_ps[1]) { # check if the top and tp are the same
tmp_ps[1] = tmp_cutoff
} else {
x_top = acy(y = tmp_top, modpars = list(tp=tmp_ps[1],ga=tmp_ps[2],er=tmp_ps[3]),type="exp4")
tmp_ps[1] = tmp_cutoff/( 1 - 2^(-x_top/tmp_ps[2]))
}
# obtain the rescaled predicted response
YC_rescale <- tcplfit2::exp4(x = XC,ps = tmp_ps)
# add the continuous rescaled curve to the continuous curve dataset
cont_fit <- rbind.data.frame(
cont_fit,
data.frame(xval = XC,yval = YC_rescale,type = "Rescaled Best Fit")
) %>% mutate(.,df = "cont_fit")
# dataset with reference lines (e.g. cutoff, bmr, top, etc.)
ref_df <- data.frame(
xval = rep(0,6),
yval = c(hit$cutoff*c(-1,1),
hit$bmr*c(-1,1),
fit$exp4$top,
hit$cutoff),
type = c(rep("Cutoff",2),rep("BMR",2),"Top","Top at Cutoff")
) %>% mutate(.,df = "ref_df")
## plotting dataframe combined
plot_highlight_df <- rbind.data.frame(OG_data,cont_fit,ref_df)
#### Generate Plots ####
## Generate a Base Plot for the Concentration-Response ##
base_plot <- ggplot2::ggplot()+
geom_point(data = dplyr::filter(plot_highlight_df,df == "OG_data"),
aes(x = log10(xval),y = yval))+
geom_line(data = dplyr::filter(plot_highlight_df,df == "cont_fit" & type == "Best Fit"),
aes(x = log10(xval),y = yval))+
geom_hline(data = dplyr::filter(plot_highlight_df,df == "ref_df" & type %in% c("Cutoff","BMR")),
aes(yintercept = yval,linetype = type,colour = type))+
ggplot2::ylim(c(-1,1))+
scale_colour_manual(breaks = c("Cutoff","BMR"),values = rep("black",2))+
scale_linetype_manual(breaks = c("Cutoff","BMR"),values = c("dashed","dotted"))+
theme_bw()+
theme(axis.title.x = element_blank(),axis.title.y = element_blank())
## Proportional Weight 1 Plot ##
p1_plot <- base_plot+
# add a title for the subplot
ggplot2::ggtitle("p1",subtitle = "AIC Weight")+
# add the constant (reference) and winning model (comparison) - highlighted
geom_line(data = dplyr::filter(plot_highlight_df,df == "cont_fit" & type != "Rescaled Best Fit"),
aes(x = log10(xval),y = yval,colour = type,linetype = type))+
scale_colour_manual(name = "",
breaks = c("Constant Fit","Best Fit","Cutoff","BMR"),
values = c("blue","red",rep("black",2)))+
scale_linetype_manual(name = "",
breaks = c("Constant Fit","Best Fit","Cutoff","BMR"),
values = c("solid","solid","dashed","dotted"))+
theme(legend.position = "inside",
legend.position.inside = c(0.5,0.15),
legend.key.size = unit(0.5,"cm"),
legend.text = element_text(size = 7),
legend.title = element_blank(),
legend.background = element_rect(fill = alpha("lemonchiffon",0.5)))
## Proportional Weight 2 Plot ##
p2_plot <- base_plot+
# add a title for the subplot
ggplot2::ggtitle("p2",subtitle = "Responses Outside Cutoff")+
# add the concentrations with median responses outside the cutoff band - highlighted
geom_point(data = dplyr::filter(plot_highlight_df,df == "OG_data" & type == "Extreme Responses"),
aes(x = log10(xval),y = yval,shape = type),col = "red")+
# add the cutoff band - highlighted
geom_hline(data = dplyr::filter(plot_highlight_df,df == "ref_df" & type %in% c("Cutoff","BMR")),
aes(yintercept = yval,linetype = type,colour = type))+
scale_colour_manual(name = "",
breaks = c("Cutoff","BMR"),
values = c("blue","black"))+
scale_linetype_manual(name = "",
breaks = c("Cutoff","BMR"),
values = c("dashed","dotted"))+
scale_shape(name = "")+
theme(legend.position = "inside",
legend.position.inside = c(0.5,0.15),
legend.key.size = unit(0.5,"cm"),
legend.spacing.y = unit(-4,"lines"),
legend.text = element_text(size = 7),
legend.title = element_blank(),
legend.background = element_rect(fill = alpha("lemonchiffon",0.5)))
## Proportional Weight 3 Plot ##
p3_plot <- base_plot+
# add a title for the subplot
ggplot2::ggtitle("p3",subtitle = "Top Likelihood Ratio")+
# add the original predicted curve & the re-scaled predicted curve - highlighted
ggplot2::geom_line(data = dplyr::filter(plot_highlight_df,df == "cont_fit" & type != "Constant Fit"),
aes(x = log10(xval),y = yval,colour = type,linetype = type))+
# add the 'top' (maximal predicted change in response from baseline) & the cutoff band - highlighted
ggplot2::geom_hline(data = dplyr::filter(plot_highlight_df,df == "ref_df"),
aes(yintercept = yval,colour = type,linetype = type))+
scale_linetype_manual(name = "",
breaks = c("Best Fit","Rescaled Best Fit","Cutoff","BMR","Top","Top at Cutoff"),
values = c(rep("solid",2),"dashed","dotted",rep("dashed",2)))+
scale_colour_manual(name = "",
breaks = c("Best Fit","Rescaled Best Fit","Cutoff","BMR","Top","Top at Cutoff"),
values = c("blue","red",rep("black",2),"skyblue","hotpink"))+
theme(legend.position = "inside",
legend.position.inside = c(0.5,0.175),
legend.key.size = unit(0.5,"cm"),
legend.text = element_text(size = 7),
legend.title = element_blank(),
legend.background = element_rect(fill = alpha("lemonchiffon",0.5)))
## All Plots ##
grid.arrange(p1_plot,p2_plot,p3_plot,
ncol = 3,
top = paste(DATA_CASE[,"signature"],DATA_CASE[,"dtxsid"],sep = "\n"),
left = "response",
bottom = paste("log10(conc)",
paste(paste("hitc:",signif(hit[,"hitcall"],3)),
paste("log10(bmd):",signif(log10(hit[,"bmd"]),3)),sep = ", "),
sep = "\n")
)
Figure 4: Each sub-plot displays the winning
curve for a given concentration-response series in the
signatures
dataset. The sub-plots highlight the key items
compared as part of a proportional weight calculation to provide an
indication of bioactivity.
One should note that the distribution of hitcall values does not follow a normal distribution, rather values tend towards 0 or 1. Hitcall values close to 1 indicate concentration-response series with biological activity in the measured response (i.e. ‘active’ hit).
Consideration: Continuous Hitcalls to Activity Calls
Users may consider binarizing the continuous hitcall values into
active or inactive designations, setting the activity threshold based on
the level of stringency required by the user. Currently, the ToxCast
requires a hitc
value to be greater than or equal to 0.90
for the response to be labeled as active, and anything less is
considered inactive. For further details on the activity threshold used
in ToxCast we refer readers to the tcpl
Vignette on CRAN and Nyffeler et al., 2023.
As previously mentioned, the output of tcplfit2_core
,
i.e. Level 4 data from invitroDB, may be fed directly to the
tcplhit2_core
function. The results are then pivoted wide,
and the resulting data table is displayed below.
The hidden code chunk below demonstrates performing hitcalling on
the fitting results from Concentration-Response Modeling
for tcpl
-like data without a database connection and
setting a binary hitcall (hitb
), where 0 indicates an
inactive response and 1 indicates an active response.
#do tcplfit2 hitcalling
myfun2 <- function(y) {
res <- tcplfit2::tcplhit2_core(params = y$params[[1]],
conc = y$conc,
resp = y$resp,
cutoff = 3*bmad,
onesd = onesd
)
list(list(res))
}
# continue with hitcalling
res <- subdat[wllt == 't', myfun2(.SD), by = .(spid)]
# pivot wider
res_wide <- rbindlist(Map(cbind, spid = res$spid, res$V1))
# add a binary hitcall column to the data
res_wide[,hitb := ifelse(hitcall >= 0.9,1,0)]
spid | n_gt_cutoff | cutoff | fit_method | top_over_cutoff | rmse | a | b | tp | p | q | ga | la | er | bmr | bmdl | bmdu | caikwt | mll | hitcall | ac50 | ac50_loss | top | ac5 | ac10 | ac20 | acc | ac1sd | bmd | conc | resp | errfun | hitb |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TP0001366A03 | 0 | 49.2830638452227 | gnls | 0.281901000511745 | 8.12511963559894 | -25.2616327130339 | 0.300000001034866 | 1.1277485785509 | 0.120675126521391 | 3.81608258484109 | 1.98905247064609 | 33.9132650800971 | 0.00208943205745552 | -85.6714534334205 | 0 | 0.00477742508368088 | 6.39137615623954 | -13.8929450062525 | 33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138|33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138 | 7.57637010009817|-8.71727493135018|-3.57441925297164|-3.14846820812451|7.58080403045715|-11.6338080189395|-7.31974763860654|-8.57298336800193|-5.18421571645738|-21.2876912931481|-1.55969444914751|-17.7927191204224|-11.2156618104964|1.70069902942194|-14.0483558489668|11.0961135367526|-5.33122078923688|-6.0944862332414|-16.7594874623633|-8.68192937293819|-25.3216028054796|-25.9261838964224|-16.7050074663144|-16.9418380935548 | dt4 | 0 | ||||||||||
TP0001366A04 | 0 | 49.2830638452227 | poly1 | 0.285116813596597 | 14.8933395805865 | 0.42196486870353 | 2.51117022960903 | 33.9132650800971 | 49.3661536586937 | 237.348407111574 | 0.180422901324317 | -99.5153531887808 | 1.56536710902145e-09 | 16.65 | 14.0514301278276 | 1.665 | 3.33 | 6.66 | 59.5773744604806 | 80.3698781471884 | 33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138|33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138 | 14.241588492206|19.1216673578058|-3.07891005142325|7.41168525453178|-0.820165219082611|-12.1418077561676|-22.3145448053283|-35.4842551108272|-20.8913650574489|-13.3480046597061|-20.0477993163153|-9.30803670622222|13.206034965252|18.3599964502708|4.17372718383475|-0.0737962667919195|-5.93594175179967|-5.54182548769889|-20.2069872072094|-11.4178462374255|-25.7804936168726|-6.72059356652579|-22.4398977513081|-12.3721483402333 | dt4 | 0 | ||||||||
TP0001366A05 | 0 | 49.2830638452227 | gnls | 0.230579663036236 | 9.8021833586969 | -17.0767315742384 | 0.300000000048306 | 4.055990640644 | 0.124889758460193 | 3.94936105182377 | 2.13196253698476 | 33.9132650800971 | 0.230506069221482 | -89.7068736755676 | 0 | 0.0122778226713923 | 4.15378706341692 | -11.3636722548247 | 33.1|33.1|11|11|3.68|3.68|1.19|1.19|0.409|0.409|0.137|0.137|33.1|33.1|11|11|3.68|3.68|1.19|1.19|0.409|0.409|0.137|0.137 | 2.37969182228561|5.76066862458754|24.6085932345949|3.15744796613787|-1.4753238878723|3.20479450955928|-10.1004513958664|-3.3249302441074|-22.0569152681714|-21.4116035614404|-14.730020189775|-8.36886871271494|7.41141949845364|14.3071742948947|9.06258998717994|16.3303193702521|7.45125493587269|-5.26756521490561|-16.7613757292355|-5.10472667472554|-2.7571633635886|-17.3240932442668|-7.60357513021789|-19.3356709366377 | dt4 | 0 | ||||||||||
TP0001366A06 | 0 | 49.2830638452227 | poly1 | 0.130144380745061 | 11.1839204176555 | 0.19261002478546 | 2.29827763252166 | 33.9132650800971 | 68.7229706022903 | 0.629210055042992 | -93.5208634895674 | 9.75399148300407e-11 | 16.65 | 6.41391382535582 | 1.665 | 3.33 | 6.66 | 130.520511691536 | 176.072170271883 | 33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138|33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138 | -6.60229015020154|14.6004291337046|15.2361596344551|4.17407686288514|13.8865803330993|-5.11131462803459|12.7039098360703|5.37585382322667|12.697182011141|-17.3026509248975|4.83287219379868|-7.17580575430865|-14.2820813262399|12.0061882332686|12.6983569327504|-0.715387388427199|11.1177376892281|0.80918529690051|-18.8189432103119|2.83206461617937|-11.4186015441744|-2.44382296012512|-6.77252789908789|-20.5146348357326 | dt4 | 0 | |||||||||
TP0001366A07 | 0 | 49.2830638452227 | gnls | 0.25480547525408 | 8.86452058842676 | -12.5575945136781 | 7.98842631852464 | 7.9999986953221 | 0.0167893679648239 | 3.91623536169883 | 1.89813253015055 | 33.9132650800971 | 0.00148372909623819 | -85.8405179284853 | 0 | 0.0167893674048174 | 3.91623536237081 | -12.5575945050592 | 33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138|33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138 | 4.11243543988432|20.7326387429006|14.7529451483177|7.10911496582029|-1.76036826257897|-4.59509043954118|-6.99430833999997|-16.3638605847648|-3.6587758270851|-24.2421016154744|-11.1072892792031|-16.4019756012561|-23.1836231299777|1.20158114007354|11.3527779597309|7.25486119401818|-15.6678034542428|-9.75250675357766|-5.5003115908377|-13.0995926623172|-14.8552472512966|-13.4613706078389|-14.086358968162|-11.5213652234997 | dt4 | 0 | ||||||||||
TP0001366A08 | 0 | 49.2830638452227 | gnls | 0.440022924941614 | 7.45675844926627 | -29.8245869314839 | 7.98596120556591 | 0.353240646376545 | 0.083649130537124 | 2.64521777979504 | 1.86978547363224 | 33.9132650800971 | 2.45711096575871e-07 | -80.0457583161288 | 0 | 0.0824132481469447 | 12.9099530041626 | -21.6856779032592 | 33.3|33.3|11.1|11.1|3.7|3.7|1.2|0.412|0.412|0.138|0.138|33.3|33.3|11.1|11.1|3.7|3.7|1.2|1.2|0.412|0.412|0.138|0.138 | -9.97203526140537|-9.26141749522581|-8.93154426626026|-17.7216363630617|-0.544184525361571|-19.4566738752308|-7.72856440998552|-19.1592648493029|-20.1683266913997|-14.6279698557126|-24.5517214338418|-6.07777157463346|-16.2381999212206|-4.93900677916975|-19.3878430509545|-8.9921646264341|-8.68643323910698|-2.75155451162059|-19.2249765364499|-33.1882205045543|-29.3179448006381|-16.9564267035365|-33.6131504865745 | dt4 | 0 |
Please note, hitcalling can also be done with the full data set,
dat
, but here we only demonstrate hitcalling with the
example data subset model fitting was performed on in Concentration-Response Modeling for tcpl
-like
data without a database connection.
The resulting output from the previous code chunk is the same format
as the result_table
table in Concentration-Response Modeling for Multiple Series with
tcplfit2_core
and tcplhit2_core
. Thus, one
can use the concRespPlot2
function, as done previously to
plot the results. The next code chunk demonstrates how to visualize the
Concentration-Response Modeling for
tcpl
-like data without a database connection fit
results.
# allocate a place-holder object
plt_list <- NULL
# plot results using `concRespPlot`
for(i in 1:nrow(res_wide)){
plt_list[[i]] <- concRespPlot2(res_wide[i,])
}
# compile and display winning model plots for concentration-response series
grid.arrange(grobs=plt_list,ncol=2)
Figure 5: Each sub-plot displays the winning
curve for a given concentration-response series in the
subdat
dataset.
Bounding the Benchmark Dose (BMD)
Occasionally, the estimated benchmark dose (BMD) can occur outside
the experimental concentration range, e.g. the BMD may be greater than
the maximum tested concentration in the data. In these cases,
tcplhit2_core
and concRespCore
provide options
for users to “bound” the estimated BMD. This can be done using the
bmd_low_bnd
and bmd_up_bnd
arguments.
bmd_low_bnd
and bmd_up_bnd
are multipliers
applied to the minimum or maximum tested concentrations (i.e. reference
doses), respectively, to provide lower and upper boundaries for BMD
estimates. This section demonstrates how to “bound” BMD estimates using
the provided arguments in the concRespCore
and
tcplhit2_core
functions, thereby preventing extreme BMD
estimates far outside of the concentration range screened.
Imposing Lower BMD Bounds
First, consider a situation when the estimated BMD is less than the lowest tested concentration. This occurs when the experimental concentrations do not go low enough to capture the transition between the baseline response and the minimum response considered adverse occurring around the benchmark response (BMR). Failure to capture the response behavior in the low-dose region of the experimental design may indicate the data is not suitable for estimating a reliable point-of-departure, and should be flagged.
In the following code chunk, we use the mc3
dataset with
some minor modifications to demonstrate this case. Here, we take one of
the concentration-response series and remove dose groups less than \(0.41\). Removing the lower dose groups
simulates the scenario where there is a lack of data in the low-dose
region and causes the BMD estimate to be less than the lowest
concentration remaining in the data.
# We'll use data from mc3 in this section
data("mc3")
# determine the background variation
# background is defined per the assay. In this case we use logc <= -2
# However, background should be defined in a way that makes sense for your application
temp <- mc3[mc3$logc<= -2,"resp"]
bmad <- mad(temp)
onesd <- sd(temp)
cutoff <- 3*bmad
# load example data
spid <- unique(mc3$spid)[94]
ex_df <- mc3[is.element(mc3$spid,spid),]
# The data file has stored concentration in log10 form, fix it
conc <- 10^ex_df$logc # back-transforming concentrations on log10 scale
resp <- ex_df$resp
# modify the data for demonstration purposes
conc2 <- conc[conc>0.41]
resp2 <- resp[which(conc>0.41)]
# pull out all of the chemical identifiers and the name of the assay
dtxsid <- ex_df[1,"dtxsid"]
casrn <- ex_df[1,"casrn"]
name <- ex_df[1,"name"]
assay <- ex_df[1,"assay"]
# create the row object
row_low <- list(conc = conc2, resp = resp2, bmed = 0, cutoff = cutoff, onesd = onesd,
assay=assay, dtxsid=dtxsid,casrn=casrn,name=name)
# run the concentration-response modeling for a single sample
res_low <- concRespCore(row_low,fitmodels = c("cnst", "hill", "gnls", "poly1", "poly2",
"pow", "exp2", "exp3", "exp4", "exp5"),
bidirectional=F)
# plotting the results
min_conc <- min(conc2)
concRespPlot2(res_low, log_conc = T) +
geom_vline(aes(xintercept = log10(min_conc)),lty = "dashed")+
geom_rect(aes(xmin = log10(res_low[1, "bmdl"]),
xmax = log10(res_low[1, "bmdu"]),ymin = 0,ymax = 30),
alpha = 0.05,fill = "skyblue") +
geom_segment(aes(x = log10(res_low[, "bmd"]),
xend = log10(res_low[, "bmd"]), y = 0,
yend = 30),col = "blue")+
ggtitle(label = paste(name,"-",assay),subtitle = dtxsid)
Figure 6: This plot shows the winning curve, the lowest experimental concentration (represented by the dashed line), BMD estimation (represented by the solid blue line), and the estimated BMD confidence interval (represented by the light blue bar).
# function results
res_low['Min. Conc.'] <- min(conc2)
res_low['Name'] <- name
res_low[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")] <- round(res_low[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")], 3)
The lowest tested concentration in the data is 0.6 but the estimated
BMD from the hitcalling results is 0.302, which is lower. Users may
allow the estimated BMD to be lower than the lowest concentration
screened while restricting it to be no lower than a boundary set by
using the argument bmd_low_bnd
.
Suppose the BMD should be no lower than 80% of the lowest tested
concentration, then bmd_low_bnd = 0.8
can be used to set
this boundary. For this example, this results in a computed boundary of
0.48. The valid input range for bmd_low_bnd
is between 0
and 1, excluding 0, (\(0 <
\text{bmd_low_bnd} \leq 1\)). If bmd_low_bnd
is set
to 1, that makes the lowest experimental concentration the lower
threshold value.
# using the argument to set a lower bound for BMD
res_low2 <- concRespCore(row_low,fitmodels = c("cnst", "hill", "gnls", "poly1", "poly2",
"pow", "exp2", "exp3", "exp4", "exp5"),
bidirectional=F, bmd_low_bnd = 0.8)
#> Warning in fitpoly2(conc = c(79.9999999999993, 0.600000000000001,
#> 29.9999999999998, : The `bidirectional` argument is ignored when `biphasic =
#> TRUE`.
If the estimated BMD is less than the computed boundary (like in this
example), it will be “bounded” to the threshold set in
bmd_low_bnd
. Similarly, the confidence interval will also
be shifted right by a distance equal to the difference between the
estimated BMD and the computed boundary. The following data table
provides the numerical adjustments after bounding is applied based on
the lower bound threshold
# print out the new results
# include previous results side by side for comparison
res_low2['Min. Conc.'] <- min(conc2)
res_low2['Name'] <- paste(name, "after `bounding`", sep = "-")
res_low['Name'] <- paste(name, "before `bounding`", sep = "-")
res_low2[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")] <- round(res_low2[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")], 3)
output_low <- rbind(res_low[1, c('Name', "Min. Conc.", "bmd", "bmdl", "bmdu")],
res_low2[1, c('Name', "Min. Conc.", "bmd", "bmdl", "bmdu")])
Below provides a visual representation of the before and after applying lower boundary BMD bounding.
# generate some concentrations for the fitted curve
logc_plot <- seq(from=-3,to=2,by=0.05)
conc_plot <- 10^logc_plot
# initiate the plot
plot(conc2,resp2,xlab="conc (uM)",ylab="Response",xlim=c(0.001,100),ylim=c(-5,60),
log="x",main=paste(name,"\n",assay),cex.main=0.9)
# add vertical lines to mark the minimum concentration in the data and the lower threshold set by bmd_low_bnd
abline(v=min(conc2), lty = 1, col = "brown", lwd = 2)
abline(v=res_low2$bmd, lty = 2, col = "darkviolet", lwd = 2)
# add markers for BMD and its boundaries before `bounding`
lines(c(res_low$bmd,res_low$bmd),c(0,50),col="green",lwd=2)
rect(xleft=res_low$bmdl,ybottom=0,xright=res_low$bmdu,ytop=50,col=rgb(0,1,0, alpha = .5), border = NA)
points(res_low$bmd, -0.5, pch = "x", col = "green")
# add markers for BMD and its boundaries after `bounding`
lines(c(res_low2$bmd,res_low2$bmd),c(0,50),col="blue",lwd=2)
rect(xleft=res_low2$bmdl,ybottom=0,xright=res_low2$bmdu,ytop=50,col=rgb(0,0,1, alpha = .5), border = NA)
points(res_low2$bmd, -0.5, pch = "x", col = "blue")
# add the fitted curve
lines(conc_plot, exp4(ps = c(res_low$tp, res_low$ga), conc_plot))
legend(1e-3, 60, legend=c("Lowest Dose Tested", "Boundary", "BMD-before", "BMD-after"),
col=c("brown", "darkviolet", "green", "blue"), lty=c(1,2,1,1))
Figure 7: This plot shows the estimated BMD and
confidence interval before and after “bounding.” The solid green line
and “X” mark the estimated BMD before “bounding,” and the green shaded
region represents the estimated confidence interval. The solid blue line
and “X” mark the BMD after “bounding,” and the blue shaded region
represents the “bounded” confidence interval. The solid brown line
represents the minimum tested concentration, and the dashed dark violet
line represents the boundary dose set by bmd_low_bnd
. Here,
the estimated BMD and the confidence interval were shifted right such
that the BMD was “bounded” to the boundary value represented by the
overlap between the blue “X” and dashed dark violet line.
Imposing Upper BMD Bounds
Next, let us consider a situation where the estimated BMD is much larger than the maximum tested concentration. This occurs when the experimental concentrations are too low to capture the transition between the baseline response and the minimum response considered adverse occurring around the benchmark response (BMR). In these situations, the chemical is likely inert or is only active in really high-doses, and should be flagged appropriately.
In the following code chunk, we use an example from the
mc3
dataset to demonstrate this case.
# load example data
spid <- unique(mc3$spid)[26]
ex_df <- mc3[is.element(mc3$spid,spid),]
# The data file has stored concentration in log10 form, so fix that
conc <- 10^ex_df$logc # back-transforming concentrations on log10 scale
resp <- ex_df$resp
# pull out all of the chemical identifiers and the name of the assay
dtxsid <- ex_df[1,"dtxsid"]
casrn <- ex_df[1,"casrn"]
name <- ex_df[1,"name"]
assay <- ex_df[1,"assay"]
# create the row object
row_up <- list(conc = conc, resp = resp, bmed = 0, cutoff = cutoff, onesd = onesd,assay=assay,
dtxsid=dtxsid,casrn=casrn,name=name)
# run the concentration-response modeling for a single sample
res_up <- concRespCore(row_up,fitmodels = c("cnst", "hill", "gnls", "poly1", "poly2",
"pow", "exp2", "exp3", "exp4", "exp5"),
bidirectional=F)
# plotting the results
max_conc <- max(conc)
concRespPlot2(res_up, log_conc = T) +
# geom_vline(aes(xintercept = max(log10(conc))),lty = "dashed")+
geom_vline(aes(xintercept = log10(max_conc)),lty = "dashed")+
geom_rect(aes(xmin = log10(res_up[1, "bmdl"]),
xmax = log10(res_up[1, "bmdu"]),ymin = 0,ymax = 125),
alpha = 0.05,fill = "skyblue") +
geom_segment(aes(x = log10(res_up[, "bmd"]),
xend = log10(res_up[, "bmd"]), y = 0,
yend = 125),col = "blue")+
ggtitle(label = paste(name,"-",assay),subtitle = dtxsid)
# max conc
res_up['Max Conc.'] <- max(conc)
res_up['Name'] <- name
res_up[1, c("Max Conc.", "bmd", "bmdl", "bmdu")] <- round(res_up[1, c("Max Conc.", "bmd", "bmdl", "bmdu")], 3)
# function results
The estimated BMD, 299.927, is greater than the maximum tested
concentration, which is 80. As with the bmd_low_bnd
, users
may allow the BMD to be greater than the maximum tested concentration
but no greater than a boundary dose set using
bmd_up_bnd
.
Suppose it is desired that the estimated BMD not be larger than 2
times the maximum tested concentration. Here,
bmd_up_bnd = 2
can set the upper threshold dose to 160. If
the estimated BMD is greater than the upper boundary (like in this
example), it will be “bounded” to this dose, and its confidence interval
will be shifted left. The valid input range for bmd_up_bnd
is any value greater than or equal to 1 (\(\text{bmd_up_bnd} \geq 1\)). If
bmd_up_bnd
is set to 1, that makes the highest experimental
concentration the upper threshold value.
# using bmd_up_bnd = 2
res_up2 <- concRespCore(row_up,fitmodels = c("cnst", "hill", "gnls", "poly1", "poly2",
"pow", "exp2", "exp3", "exp4", "exp5"),
bidirectional=F, bmd_up_bnd = 2)
#> Warning in fitpoly2(conc = c(0.0199999999999999, 0.3, 0.0599999999999995, : The
#> `bidirectional` argument is ignored when `biphasic = TRUE`.
Similar to the bmd_low_bnd
bounding approach, if the
estimated BMD is greater than the computed boundary (like in this
example), it will be “bounded” to the threshold set in
bmd_up_bnd
. As before, the confidence interval will also be
shifted to the left by a distance equal to the difference between the
estimated BMD and the computed boundary. The following data table
provides the numerical adjustments after bounding is applied based on
the upper bound threshold.
# print out the new results
# include previous results side by side for comparison
res_up2['Max Conc.'] <- max(conc)
res_up2['Name'] <- paste(name, "after `bounding`", sep = "-")
res_up['Name'] <- paste(name, "before `bounding`", sep = "-")
res_up2[1, c("Max Conc.", "bmd", "bmdl", "bmdu")] <- round(res_up2[1, c("Max Conc.", "bmd", "bmdl", "bmdu")], 3)
output_up <- rbind(res_up[1, c('Name', "Max Conc.", "bmd", "bmdl", "bmdu")],
res_up2[1, c('Name', "Max Conc.", "bmd", "bmdl", "bmdu")])
Below provides a visual representation of the before and after applying the upper boundary BMD bounding.
# generate some concentration for the fitting curve
logc_plot <- seq(from=-3,to=2,by=0.05)
conc_plot <- 10^logc_plot
# initiate plot
plot(conc,resp,xlab="conc (uM)",ylab="Response",xlim=c(0.001,500),ylim=c(-5,150),
log="x",main=paste(name,"\n",assay),cex.main=0.9)
# add vertical lines to mark the maximum concentration in the data and the upper boundary set by bmd_up_bnd
abline(v=max(conc), lty = 1, col = "brown", lwd=2)
abline(v=160, lty = 2, col = "darkviolet", lwd=2)
# add marker for BMD and its boundaries before `bounding`
lines(c(res_up$bmd,res_up$bmd),c(0,125),col="green",lwd=2)
rect(xleft=res_up$bmdl,ybottom=0,xright=res_up$bmdu,ytop=125,col=rgb(0,1,0, alpha = .5), border = NA)
points(res_up$bmd, -0.5, pch = "x", col = "green")
# add marker for BMD and its boundaries after `bounding`
lines(c(res_up2$bmd,res_up2$bmd),c(0,125),col="blue",lwd=2)
rect(xleft=res_up2$bmdl,ybottom=0,xright=res_up2$bmdu,ytop=125,col=rgb(0,0,1, alpha = .5), border = NA)
points(res_up2$bmd, -0.5, pch = "x", col = "blue")
# add the fitting curve
lines(conc_plot, poly1(ps = c(res_up$a), conc_plot))
legend(1e-3, 150, legend=c("Maximum Dose Tested", "Boundary", "BMD-before", "BMD-after"),
col=c("brown", "darkviolet", "green", "blue"), lty=c(1,2,1,1))
Figure 8: This plot shows the estimated BMD and
confidence interval before and after “bounding”. The green line and “X”
mark the estimated BMD before “bounding” and the green shaded region
represents the estimated confidence interval. The solid blue line and
“X” mark the “bounded” BMD, and the blue shaded region represents the
“bounded” confidence interval. The solid brown line represents the
maximum tested concentration, and the dashed dark violet line represents
the boundary dose set by bmd_up_bnd
. Here, the estimated
BMD and the confidence interval were shifted left such that the BMD was
“bounded” to the boundary value represented by the overlap between the
blue “X” and dashed dark violet line.
Bounding BMDs with tcplhit2_core
The previous two examples provided for BMD bounding use the
concRespCore
function. However, the
bmd_low_bnd
and bmd_up_bnd
arguments originate
from the tcplhit2_core
function, which is utilized within
the concRespCore
function. Thus, for users that perform
dose-response modeling and hitcalling utilizing the
tcplfit2_core
and tcplhit2_core
separately can
do the same BMD “bounding.” Regardless of whether a user utilizes the
bmd_low_bnd
and bmd_up_bnd
arguments in the
concRespCore
or tcplhit2_core
function the
results should be identical. The code provided below shows how to
replicate the results from the lower bound
example using tcplhit2_core
as an alternative.
# using the same data, fit curves
param <- tcplfit2_core(conc2, resp2, cutoff = cutoff)
hit_res <- tcplhit2_core(param, conc2, resp2, cutoff = cutoff, onesd = onesd,
bmd_low_bnd = 0.8)
The following data table provides the numerical adjustments after bounding is applied, here in the lower bound direction.
# adding the result from tcplhit2_core to the output table for comparison
hit_res["Name"]<- paste("Chlorothalonil", "tcplhit2_core", sep = "-")
hit_res['Min. Conc.'] <- min(conc2)
hit_res[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")] <- round(hit_res[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")], 3)
output_low <- rbind(output_low,
hit_res[1, c('Name', "Min. Conc.", "bmd", "bmdl", "bmdu")])
Impacts if BMD is between the BMD Lower Bound and Lowest Dose Tested
If the estimated BMD falls between the lowest dose tested and the defined threshold for an acceptable BMD, i.e. lowest tested dose and lower boundary dose, the estimated BMD will remain unchanged. For demonstration purposes, the lower bound example is used, but the same principle applies to the upper bound case.
The same data from the lower bound
example is used along with a smaller bmd_low_bnd
value
to obtain a lower boundary dose. Here, the estimated BMD is acceptable
as long as it is no less than 40% (two-fifths) of the minimum tested
concentration. The estimated BMD is 0.302, which is between the lowest
tested dose, 0.6, and the new computed boundary, 0.24. Thus, the BMD
estimate and its confidence interval will remain unchanged.
res_low3 <- concRespCore(row_low,fitmodels = c("cnst", "hill", "gnls", "poly1", "poly2",
"pow", "exp2", "exp3", "exp4", "exp5"),
conthits = T, aicc = F, bidirectional=F, bmd_low_bnd = 0.4)
#> Warning in fitpoly2(conc = c(79.9999999999993, 0.600000000000001,
#> 29.9999999999998, : The `bidirectional` argument is ignored when `biphasic =
#> TRUE`.
The following data table provides the results after applying bounding based on the lower bound threshold.
# print out the new results
# add to previous results for comparison
res_low3['Min. Conc.'] <- min(conc2)
res_low3['Name'] <- paste("Chlorothalonil", "after `bounding` (two fifths)", sep = "-")
res_low3[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")] <- round(res_low3[1, c("Min. Conc.", "bmd", "bmdl", "bmdu")], 3)
output_low <- rbind(output_low[-3, ],
res_low3[1, c('Name', "Min. Conc.", "bmd", "bmdl", "bmdu")])
Below provides a visual representation of the before and after applying lower boundary BMD bounding.
# initiate the plot
plot(conc2,resp2,xlab="conc (uM)",ylab="Response",xlim=c(0.001,100),ylim=c(-5,60),
log="x",main=paste(name,"\n",assay),cex.main=0.9)
# add vertical lines to mark the minimum concentration in the data and the lower boundary set by bmd_low_bnd
abline(v=min(conc2), lty = 1, col = "brown", lwd = 2)
abline(v=0.4*min(conc2), lty = 2, col = "darkviolet", lwd = 2)
# add markers for BMD and its boundaries before `bounding`
lines(c(res_low$bmd,res_low$bmd),c(0,50),col="green",lwd=2)
rect(xleft=res_low$bmdl,ybottom=0,xright=res_low$bmdu,ytop=50,col=rgb(0,1,0, alpha = .5), border = NA)
points(res_low$bmd, 0, pch = "x", col = "green")
# add markers for BMD and its boundaries after `bounding`
lines(c(res_low3$bmd,res_low3$bmd),c(0,50),col="blue",lwd=2)
rect(xleft=res_low3$bmdl,ybottom=0,xright=res_low3$bmdu,ytop=50,col=rgb(0,0,1, alpha = .5), border = NA)
points(res_low3$bmd, 0, pch = "x", col = "blue")
# add the fitted curve
lines(conc_plot, exp4(ps = c(res_low$tp, res_low$ga), conc_plot))
legend(1e-3, 60, legend=c("Lowest Dose Tested", "Boundary Dose", "BMD-before", "BMD-after"),
col=c("brown", "darkviolet", "green", "blue"), lty=c(1,2,1,1))
Figure 9: This plot shows the estimated BMD and the confidence interval before and after “bounding”. The dashed dark violet line represents the boundary dose and the solid brown line represents the minimum tested concentration, which are at 0.24 and 0.6, respectively. The estimated BMD of 0.302 falls between the boundary and lowest dose tested, which leaves the BMD and confidence intervals unchanged. Here, the estimated BMD and “bounded” BMD are the same. Thus, the green and blue lines and “X”s representing the estimated BMD before and after “bounding”, respectively, as well as their confidence intervals indicated by the shaded regions completely overlap.
Plotting
Concentration-Response Modeling for a Single Series
with concRespCore
and for Multiple
Series with tcplfit2_core
and
tcplhit2_core
illustrated two plotting functions
available in tcplfit2
based on ggplot2
plotting grammar. This section will show two other plotting options
available in tcplfit2
, which use base R plotting, namely
the do.plot
argument in concRespCore
and the
concRespPlot
function.
For this section of the vignette, we use the signature
dataset from tcplfit2
to demonstrate the utility of the
plotting functions, see High-Throughput
Transcriptomics Platform for Screening Environmental Chemicals for
further details. The signatures
dataset contains 6
transcriptional signatures for one chemical. Each row in the data is
treated as a chemical-assay endpoint pair and provides the experimental
concentration-response data, along with the cutoff and baseline standard
deviation.
Plotting All Models with concRespCore
and
concRespPlot
The concRespPlot
function and the do.plot
argument in concRespCore
provide plots similar to Figure 1
and 2, respectively. The do.plot
argument returns a plot of
all curve fits of a chemical, and concRespCore
returns a
plot of the winning curve with the hitcalling results.
# read in the file
data("signatures")
# set up a 3 x 2 grid for the plots
oldpar <- par(no.readonly = TRUE)
on.exit(par(oldpar))
par(mfrow=c(3,2),mar=c(4,4,5,2))
# fit 6 observations in signatures
for(i in 1:nrow(signatures)){
# set up input data
row = list(conc=as.numeric(str_split(signatures[i,"conc"],"\\|")[[1]]),
resp=as.numeric(str_split(signatures[i,"resp"],"\\|")[[1]]),
bmed=0,
cutoff=signatures[i,"cutoff"],
onesd=signatures[i,"onesd"],
name=signatures[i,"name"],
assay=signatures[i,"signature"])
# run concentration-response modeling (1st plotting option)
out = concRespCore(row,conthits=F,do.plot=T)
if(i==1){
res <- out
}else{
res <- rbind.data.frame(res,out)
}
}
Figure 10: This figure provides several example
plots generated using the argument do.plot=TRUE
in the
concRespCore
function. Each plot displays data for a single
row of data in the signatures
dataset, and like Figure 1
provides all model fits for a given response. Note, the detail of smooth
curves is not captured here as the curves only show the predicted
responses at the provided experimental concentrations.
# set up a 3 x 2 grid for the plots
oldpar <- par(no.readonly = TRUE)
on.exit(par(oldpar))
par(mfrow=c(3,2),mar=c(4,4,2,2))
# plot results using `concRespPlot`
for(i in 1:nrow(res)){
concRespPlot(res[i,],ymin=-1,ymax=1)
}
Figure 11: Each figure shows curve fitting
results for a set of responses in the signatures
data. Each
plot title contains the chemical name and assay ID. Additionally,
summary statistics from the curve fitting results – including the
winning model, AC50, top, BMD, ACC, and hitcall – are displayed at the
top of the plot. The black dots represent the observed responses, and
the winning model fit is displayed as a solid black curve. The estimated
BMD is displayed with a solid green vertical line, and the confidence
interval around the BMD is represented with solid green lines bounding
the green shaded region (i.e., lower and upper BMD confidence limits -
BMDL and BMDU, respectively). The black horizontal lines bounding the
grey shaded region indicate the estimated baseline noise (per the user
defined cutoff band) and is centered around the x-axis (i.e. y =
0).
Plotting All Models with tcplfit2_core
Output
While most users prefer to fit and hitcall all of their data in one
step with concRespCore
, some users (as mentioned in earlier
sections) may prefer to perform curve fitting with
tcplfit2_core
and then hitcalling with
tcplhit2_core
. In this case, users may want to examine and
compare each of the resulting concentration-response fits from all
models included in the fitting step. The plot_allcurves
function enables users to automatically generate this visualization with
the output from the tcplfit2_core
function. Note, to
utilize plot_allcurves
, tcplfit2_core
must be
run separately to obtain the necessary input. The resulting figure
allows one to evaluate general behaviors and qualities of the resulting
curve fits. Furthermore, some curves may fail to fit the observed data.
In these cases, failed models are excluded from the plot, and a warning
message is provided, such that the user will know which models
reasonably describe the data. Lastly, if a user wants to visualize their
data with the concentrations on the \(\mathbf{log_{10}}\) scale, they can set the
log_conc
argument to TRUE
.
The hidden code chunk below shows how to load the data and obtain
the curve fitting results with tcplfit2_core
. We also refer
readers to the Concentration-Response Modeling for
Multiple Series with tcplfit2_core
and
tcplhit2_core
section if they are interested in further
details.
# Load the example data set
data("signatures")
# using the first row of signature as an example
conc <- as.numeric(str_split(signatures[1,"conc"],"\\|")[[1]])
resp <- as.numeric(str_split(signatures[1,"resp"],"\\|")[[1]])
cutoff <- signatures[1,"cutoff"]
# run curve fitting
output <- tcplfit2_core(conc, resp, cutoff)
# show the structure of the output
summary(output)
#> Length Class Mode
#> cnst 5 -none- list
#> hill 17 -none- list
#> gnls 22 -none- list
#> poly1 13 -none- list
#> poly2 17 -none- list
#> pow 15 -none- list
#> exp2 15 -none- list
#> exp3 17 -none- list
#> exp4 15 -none- list
#> exp5 17 -none- list
#> modelnames 10 -none- character
#> errfun 1 -none- character
The following code demonstrates utilizing the curve fitting results
from tcplfit2_core
with the plot_allcurves
function to generate the visualization containing all included model
fits:
# get plots in the original and in log-10 concentration scale
basic <- plot_allcurves(output, conc, resp)
basic_log <- plot_allcurves(output, conc, resp, log_conc = T)
# arrange the ggplot2 output into a grid
grid.arrange(basic, basic_log)
Figure 12: Example plots generated by
plot_allcurves
. Both plots display the experimental data
(open circles) with all successful curve fits. Concentrations are in the
original and \(\mathbf{log_{10}}\)
scale for the top and bottom plots, respectively.
Plotting the Winning Model with concRespPlot2
Most users utilizing the tcplfit2
package are only
interested in generating a plot displaying the observed
concentration-response data with the winning curve. This can be achieved
with the concRespPlot2
function, which generates a basic
plot with minimal information. concRespPlot2
gives a
slightly more aesthetic plot compared to the basic plotting
functionality in concRespPlot
by using the
ggplot2
package. Minimalism in the resulting plot gives
users the flexibility to include additional details they consider
informative, while maintaining a clean visualization. More details on
this is found in the Customizing
concRespPlot2
Plots section. As with the
plot_allcurves
function, the log_conc
argument
is available to return a plot with concentrations on the \(\mathbf{log_{10}}\) scale.
The hidden code chunk below shows how to format data and perform
curve fitting and hitcalling with concRespCore
. We also
refer readers to the Concentration-Response Modeling for
a Single Series with concRespCore
section if they are
interested in further details.
# prepare the 'row' object for concRespCore
row <- list(conc=conc,
resp=resp,
bmed=0,
cutoff=cutoff,
onesd=signatures[1,"onesd"],
name=signatures[1,"name"],
assay=signatures[1,"signature"])
# run concentration-response modeling
out <- concRespCore(row,conthits=F)
# show the output
out
#> name assay n_gt_cutoff
#> 1 Clomiphene citrate (1:1) CMAP mometasone 7.6e-06 100 2494 100 3
#> cutoff fit_method top_over_cutoff rmse a b tp p q ga
#> 1 0.2393037 exp4 2.772277 0.1135895 NA NA 0.7491121 NA NA 9.591142
#> la er bmr bmdl bmdu caikwt mll hitcall ac50 ac50_loss
#> 1 NA -2.6244 0.1614104 2.380694 4.848624 NA NA 1 8.092406 NA
#> top ac5 ac10 ac20 acc ac1sd bmd
#> 1 0.6634163 0.6266886 1.283112 2.697483 5.325258 2.408014 3.357835
#> conc
#> 1 0.03|0.1|0.3|1|10|3|30
#> resp
#> 1 -0.267223789187984|0.0446549190032419|-0.0150009098668537|0.097550989137631|0.420105528343523|0.0353858177275554|0.657069577568875
#> errfun
#> 1 dt4
The following code demonstrates utilizing the curve fit and
hitcalling results from concRespCore
with the
concRespPlot2
function to visualize the winning model
fit:
# pass the output to the plotting function
basic_plot <- concRespPlot2(out)
basic_log <- concRespPlot2(out, log_conc = TRUE)
# arrange the ggplot2 output into a grid
grid.arrange(basic_plot, basic_log)
Figure 13: Example plots generated by
concRespPlot2
. Both plots display the experimental data
(open circles) and the best curve fit (red curve). Concentrations are in
the original and \(\mathbf{log_{10}}\)
scale for the top and bottom plots, respectively.
Note, one may also use output from tcplhit2_core
as
input for concRespPlot2
.
Customizing concRespPlot2
Plots
Users may want to generate a polished figure to include in a report
or publication. However, the basic plot from concRespPlot2
may not include enough context or information to be included as part of
a report or publication. Thus, this section introduces a few simple
modifications one can use to customize the basic plot returned by
concRespPlot2
to provide additional information. Because
concRespPlot2
returns a ggplot2
object,
additional details can be included with ggplot2
layers.
ggplot2
layers can be added directly to the base plot with
a +
operator.
Customizations one may want to include are:
- Adding a title with compound and assay endpoint information
- Visualizing the user-specified cutoff band to evaluate response efficacy
- Adding points and lines to label potency estimates and relevant responses - e.g. the benchmark dose (BMD) and benchmark response (BMR) to evaluate the estimates relative to the experimental data
- Adding comparable data and their winning curve fits to evaluate different experimental scenarios (e.g. multiple compounds, technologies, endpoints, etc.)
It should be noted that this is just a small subset of the possible customizations and is not a comprehensive list of possible changes one could make.
Each of the following sub-sections explores the aforementioned
customizations, but again these are just a limited set of possible
updates to the base plotting from concRespPlot2
.
Note, the plotting output from plot_allcurves
may
also be customized similarly (if desired). However, this will not be
shown in this vignette.
- Adding a Plot Title, Shade Cutoff Band, and Potency Estimates
The first customization one may want to include on the basic plot
from concRespPlot2
is a title with necessary chemical and
response (i.e. assay endpoint) information. Furthermore, because the
estimated benchmark dose (BMD) (i.e. potency) is likely of interest for
the applicable report/manuscript, then adding guidelines for the
benchmark response (BMR) and BMD, as well as a shaded region
representing the cutoff band (for reference) may be useful.
The hidden code chunk below adds a plot title, shades a region signifying the cutoff band, and highlights the specified adverse response level (BMR) with a horizontal blue line along with the potency estimate (BMD) represented by the vertical blue segment and red point.
# Using the fitted result and plot from the example in the last section
# get the cutoff from the output
cutoff <- out[, "cutoff"]
basic_plot +
# Cutoff Band - a transparent rectangle
geom_rect(aes(xmin = 0,xmax = 30,ymin = -cutoff,ymax = cutoff),
alpha = 0.1,fill = "skyblue") +
# Titles
ggtitle(
label = paste("Best Model Fit",
out[, "name"],
sep = "\n"),
subtitle = paste("Assay Endpoint: ",
out[, "assay"])) +
## Add BMD and BMR labels
geom_hline(
aes(yintercept = out[, "bmr"]),
col = "blue") +
geom_segment(
aes(x = out[, "bmd"], xend = out[, "bmd"], y = -0.5, yend = out[, "bmr"]),
col = "blue"
) + geom_point(aes(x = out[, "bmd"], y = out[, "bmr"], fill = "BMD"), shape = 21, cex = 2.5)
#> Warning in geom_segment(aes(x = out[, "bmd"], xend = out[, "bmd"], y = -0.5, : All aesthetics have length 1, but the data has 7 rows.
#> ℹ Please consider using `annotate()` or provide this layer with data containing
#> a single row.
#> Warning in geom_point(aes(x = out[, "bmd"], y = out[, "bmr"], fill = "BMD"), : All aesthetics have length 1, but the data has 7 rows.
#> ℹ Please consider using `annotate()` or provide this layer with data containing
#> a single row.
Figure 14: Basic plot generated with
concRespPlot2
with updated titles to provide additional
details about the observed data. Experimental data is shown with the
open circles and the red curve represents the best fit model. The title
and subtitle display the compound name and assay endpoint, respectively.
The light blue band represents responses within the cutoff threshold(s)
– i.e. cutoff band. The red point represents the BMD estimated from the
winning model, given the BMR. The horizontal and vertical blue lines
display the BMR and the estimated BMD, respectively.
- Label All Potency Estimates
The concRespCore
and tcplfit2_core
functions return several potency estimates in addition to the BMD
(displayed in Figure 3), e.g. AC50, ACC, etc. Thus, it may be desirable
to users to include and compare several of the resulting potency
estimates on the same plot.
The hidden code chunk below demonstrates how to add all available potency estimates to the base plot.
# Get all potency estimates and the corresponding y value on the curve
estimate_points <- out %>%
select(bmd, acc, ac50, ac10, ac5) %>%
tidyr::pivot_longer(everything(), names_to = "Potency Estimates") %>%
mutate(`Potency Estimates` = toupper(`Potency Estimates`))
y <- c(out[, "bmr"], out[, "cutoff"], rep(out[, "top"], 3))
y <- y * c(1, 1, .5, .1, .05)
estimate_points <- cbind(estimate_points, y = y)
# add Potency Estimate Points and set colors
basic_plot + geom_point(
data = estimate_points,
aes(x = value, y = y, fill = `Potency Estimates`), shape = 21, cex = 2.5
)
Figure 15: Basic plot generated by
concRespPlot2
with potency estimates highlighted.
Experimental data is shown with the open circles and the red curve
represents the best fit model. The five colored points represent the
various potency estimates from concRespCore
. These include
the activity concentrations at 5, 10, and 50 percent of the maximal
response from baseline (AC5 = gold, AC10 = red, and AC50 = green,
respectively), as well as the activity concentration at the
user-specified threshold (cutoff) and BMD (ACC = blue and BMD = purple,
respectively).
It should be noted, when using the log_conc = TRUE
in
the basic plotting function, the potency estimates will also need to be
log-transformed to be displayed in the correct positions.
The hidden code chunk below demonstrates how to add potency values when the base plot is using a \(\mathbf{log_{10}}\) concentration scale.
# add Potency Estimate Points and set colors - with plot in log-10 concentration
basic_log + geom_point(
data = estimate_points,
aes(x = log10(value), y = y, fill = `Potency Estimates`), shape = 21, cex = 2.5
)
Figure 16: Basic plot generated by
concRespPlot2
, where log_conc = TRUE
, with
potency estimates highlighted. Experimental data is shown with the open
circles and the red curve represents the best fit model. The five
colored points represent the various potency estimates from
concRespCore
. These include the activity concentrations at
5, 10, and 50 percent of the maximal response from baseline (AC5 = gold,
AC10 = red, and AC50 = green, respectively), as well as the activity
concentration at the user-specified threshold (cutoff) and BMD (ACC =
blue and BMD = purple, respectively).
- Add Additional Curves
Some users may want to compare one or more curve fits, which
represent either various compounds, experimental scenarios,
technologies, etc. For this example, the flexibility of
ggplot2
accommodates a user’s unique plotting needs. This
sub-section provides example code that a user may modify to add another
curve, and may be generalized to add more than one curve.
It is necessary the user first knows the models to be displayed on the plot and corresponding parameter estimates (i.e. must have all the fitting and hitcalling output prior to plotting), such that they can then generate smooth curves by predicting the responses for a series of points within the concentration range. The output for applicable curves (i.e. concentration points and predicted response for the smooth curve) can then be added to the basic plot. Here, the smooth curves are generated using a series of one hundred points within the experimental concentration range, but the curve resolution may be changed based on the number of points included in the concentration series (i.e. more points will result in higher resolution).
The hidden code chunk below demonstrates how to predict the responses for another curve and generate a smooth curve fit to be added to the basic plot. Additionally, we have included details for labeling the two curve fits plotted together.
# maybe want to extract and use the same x's in the base plot
# to calculate predicted responses
conc_plot <- basic_plot[["layers"]][[2]][["data"]][["conc_plot"]]
basic_plot +
# fitted parameter values of another curve you want to add
geom_line(data=data.frame(x=conc_plot, y=tcplfit2::exp5(c(0.5, 10, 1.2), conc_plot)), aes(x,y,color = "exp5"))+
# add different colors for comparisons
scale_colour_manual(values=c("#CC6666", "#9999CC"),
labels = c("Curve 1-exp4", "Curve 2-exp5")) +
labs(title = "Curve 1 v.s. Curve 2")
Figure 17: Basic plot generated by
concRespPlot2
with an additional curve for comparison.
Experimental data is shown with the open circles, the red curve
represents the best fit model for the baseline model, and the blue curve
represents the additional curve of interest.
Plots like Figure 17 typically have similar concentrations and response ranges. If one is comparing curves that do not have similar concentration and/or response ranges, additional alterations may be necessary.
Area Under the Curve (AUC)
Please note, the AUC estimation in tcplfit2
is a
beta functionality still under development and review, and as such,
feedback is welcome.
This section explores how to estimate the area under the curve (AUC)
for concentration-response fits from tcplfit2
. Generally,
the AUC estimate may be interpreted as a measure of overall efficacy and
potency, which users may want to include as part of their analyses,
e.g. analyses aiming to prioritize chemicals by bio-activity. The AUC is
estimated by integrating the best fitting (or another applicable) model
with the optimized parameter values obtained during the curve fitting
process.
Note: When applying the get_AUC
function, which
estimates the AUC, it is important to know whether the model bounds are
on the log10- or arithmetic-scale. Using the log10-scale or arithmethic
scale may result in different values and interpretation of the AUC value
may change. In the get_AUC
function, use.log
is a logical option to control which scale the AUC is calculated on, and
is FALSE
by default.
In tcplfit2
we provide functionality such that a user
may obtain the AUC directly from the concRespCore
function
and include it as part of the output table. Alternatively, one may use a
more granular approach by utilizing the get_AUC
and
post_hit_AUC
functions directly with the
tcplfit2_core
and tcplhit2_core
output,
respectively. The following two sections outline these approaches, and
the latter section breaks down the AUC estimation for several different
response cases.
Area Under the Curve (AUC) with concRespCore
Performing the AUC estimation within concRespCore
is a
fairly simple modification. The concRespCore
function has a
logical argument AUC
controlling whether the area under the
curve (AUC) is calculated for the winning model and returned alongside
the other modeling results (e.g. model parameters and hitcall details),
when AUC = TRUE
the AUC will be included in the output.
(default is FALSE
requiring a user to specify the inclusion
of this output).
# some example data
conc <- list(.03, .1, .3, 1, 3, 10, 30, 100)
resp <- list(0, .2, .1, .4, .7, .9, .6, 1.2)
row <- list(conc = conc,
resp = resp,
bmed = 0,
cutoff = 1,
onesd = .5)
# AUC is included in the output
concRespCore(row, conthits = TRUE, AUC = TRUE)
#> n_gt_cutoff cutoff fit_method top_over_cutoff rmse a b tp
#> cnst 1 1 hill 1.158155 0.1750312 NA NA 1.225599
#> p q ga la er bmr bmdl bmdu caikwt
#> cnst 0.7752844 NA 2.554272 NA -2.467853 0.6745 2.341811 4.822553 6.064845e-05
#> mll hitcall ac50 ac50_loss top ac5 ac10
#> cnst 4.492301 0.9560217 2.215911 NA 1.158155 0.05303233 0.1384575
#> ac20 acc ac1sd bmd conc
#> cnst 0.390247 17.43267 1.580024 3.314775 0.03|0.1|0.3|1|3|10|30|100
#> resp errfun AUC
#> cnst 0|0.2|0.1|0.4|0.7|0.9|0.6|1.2 dt4 106.1212
Area Under the Curve (AUC) with tcplfit2_core
and
tcplhit2_core
Let us consider the case where a users wants to run the
tcplfit2_core
and tcplhit2_core
functions
separately and now wants to obtain AUC estimates. Here, and in the
following sub-sections, we demonstrate estimating the AUC for this type
of scenario. We will consider obtaining the AUC values for individual
models from the fit results, and AUC values only for the best fit
(i.e. winning) model. Furthermore, we will consider the following
response cases in the following sub-sections:
- Positive Curve Fits - i.e. increasing models only
- Negative Curve Fits - i.e. decreasing models only
- Bi-phasic Curve Fits - i.e. models where the curve crosses the x-axis
- Positive Responses
First, let us consider a positive curve fit case, which is the typical baseline example – (i.e. monotonic increasing response above the x-axis).
The hidden code chunk below shows the data set-up, curve fitting, and plotting code for our positive curve fit example.
# This is taken from the example under tcplfit2_core
conc_ex2 <- c(0.03, 0.1, 0.3, 1, 3, 10, 30, 100)
resp_ex2 <- c(0, 0.1, 0, 0.2, 0.6, 0.9, 1.1, 1)
# fit all available models in the package
# show all fitted curves
output_ex2 <- tcplfit2_core(conc_ex2, resp_ex2, 0.8)
# arrange the ggplot2 output into a grid
grid.arrange(plot_allcurves(output_ex2, conc_ex2, resp_ex2),
plot_allcurves(output_ex2, conc_ex2, resp_ex2, log_conc = TRUE),
ncol = 2)
Figure 18: This figure depicts all fit concentration-response curves. The models are polynomial 1 and 2, power, Hill, gain-loss, and exponentials 2-5.
Let us first consider the case where only the AUC estimate for the
winning model is desirable. For this scenario, we included the
post_hit_AUC
function, which is a wrapper function for
get_AUC
, within tcplfit2
. This function takes
the tcplhit2_core
output, in the data frame format with a
single row containing the concentration-response data, the winning model
name, winning model’s optimized parameter values, and hitcalling
results. Internally, the wrapper function extracts information from the
one-row data frame output and passes it to get_AUC
, which
calculates the AUC.
# hitcalling results
out <- tcplhit2_core(output_ex2, conc_ex2, resp_ex2, 0.8, onesd = 0.4)
out
#> n_gt_cutoff cutoff fit_method top_over_cutoff rmse a b tp
#> cnst 3 0.8 hill 1.275574 0.05022924 NA NA 1.023239
#> p q ga la er bmr bmdl bmdu caikwt
#> cnst 1.592714 NA 2.453014 NA -3.295307 0.5396 2.33877 2.979982 1.446965e-08
#> mll hitcall ac50 ac50_loss top ac5 ac10
#> cnst 12.71495 0.9999999 2.444659 NA 1.020459 0.3855156 0.6162344
#> ac20 acc ac1sd bmd conc
#> cnst 1.025095 5.466819 1.856853 2.627574 0.03|0.1|0.3|1|3|10|30|100
#> resp errfun
#> cnst 0|0.1|0|0.2|0.6|0.9|1.1|1 dt4
# perform AUC estimation
post_hit_AUC(out)
#> [1] 97.41475
Now, suppose the users wants AUC estimates for a single model which
is not necessarily the best fit model to the data. For this scenario,
the user will want to use the most granular AUC estimation function
(i.e. get_AUC
). Unlike the post_hit_AUC
function, it is necessary to manually enter the model name, parameters
values, etc. to obtain an AUC estimate. The full list of necessary
inputs include:
- the model name (single model of interest)
- lower and upper concentration bounds (usually the lowest and highest concentrations in the data, respectively)
- the estimated model parameters (for the specified model)
Here we demonstrate the AUC estimation for the Hill model with
get_AUC
, starting with extracting the relevant parameter
values from the tcplfit2_core
output to passing the
relevant information to the AUC estimation function.
fit_method <- "hill"
# extract the parameters
modpars <- output_ex2[[fit_method]][output_ex2[[fit_method]]$pars]
# plug into get_AUC function
estimated_auc1 <- get_AUC(fit_method, min(conc_ex2), max(conc_ex2), modpars)
estimated_auc1
#> [1] 97.41475
# extract the predicted responses from the model
pred_resp <- output_ex2[[fit_method]][["modl"]]
# plot to see if the result make sense
# the shaded area is what the function tries to find
plot(conc_ex2, pred_resp,ylim = c(0,1),
xlab = "Concentration",ylab = "Response",main = "Positive Response AUC")
lines(conc_ex2, pred_resp)
polygon(c(conc_ex2, max(conc_ex2)), c(pred_resp, min(pred_resp)), col=rgb(1,0,0,0.5))
Figure 19: The red shaded region is the area
under the Hill curve fit. The AUC estimated with get_AUC
is
97.41475. This estimate seems to align with the area of the shaded
region.
Because the winning model in this example is the Hill model, if we
compare the AUC from the two previous approaches the AUC values are
identical – i.e. post_hit_AUC
: 97.41475,
get_AUC
: 97.41475.
As mentioned earlier, because get_AUC
is the most
granular of the AUC estimation functions and most flexible we can use
this function to estimate the AUC for all models, excluding the constant
model, fit to a concentration-response series.
The hidden code chunk below demonstrates how to apply the
get_AUC
function across all models included in the
tcplfit2_core
output.
# list of models
fitmodels <- c("gnls", "poly1", "poly2", "pow", "exp2", "exp3", "exp4", "exp5")
mylist <- list()
for (model in fitmodels){
fit_method <- model
# extract corresponding model parameters
modpars <- output_ex2[[fit_method]][output_ex2[[fit_method]]$pars]
# get AUC
mylist[[fit_method]] <- get_AUC(fit_method, min(conc_ex2), max(conc_ex2), modpars)
}
# print AUC's for other models
data.frame(mylist,row.names = "AUC")
#> gnls poly1 poly2 pow exp2 exp3 exp4 exp5
#> AUC 97.4147 58.09263 121.7488 97.43487 55.01408 96.18956 98.80625 98.65734
- Negative Responses
Next, let us consider a negative curve fit case – (i.e. monotonic
decreasing response about the x-axis). Here, we use example data from
the signatures
dataset.
The hidden code chunk below shows the data set-up, curve fitting, and plotting code for our negative curve fit example.
# use row 5 in the data
conc <- as.numeric(str_split(signatures[5,"conc"],"\\|")[[1]])
resp <- as.numeric(str_split(signatures[5,"resp"],"\\|")[[1]])
cutoff <- signatures[5,"cutoff"]
# plot all models, this is an example of negative curves
output_negative <- tcplfit2_core(conc, resp, cutoff)
grid.arrange(plot_allcurves(output_negative, conc, resp),
plot_allcurves(output_negative, conc, resp, log_conc = TRUE), ncol = 2)
Figure 20: This plot depicts all concentration-response curves fit to the observed data. All curves show decreasing responses starting from 0 and below the x-axis.
Here, we will only demonstrate using the get_AUC
function with the exponential 3 model. Note: This is not the best
fit model based on the AIC.
# choose fit method
fit_method <- "exp3"
# extract corresponding model parameters and predicted response
modpars <- output_negative[[fit_method]][output_negative[[fit_method]]$pars]
pred_resp <- output_negative[[fit_method]][["modl"]]
estimated_auc2 <- get_AUC(fit_method, min(conc), max(conc), modpars)
estimated_auc2
#> [1] -12.92738
# plot this curve
pred_resp <- pred_resp[order(conc)]
plot(conc[order(conc)], pred_resp,ylim = c(-1,0),
xlab = "Concentration",ylab = "Response",main = "Negative Response AUC")
lines(conc[order(conc)], pred_resp)
polygon(c(conc[order(conc)], max(conc)), c(pred_resp, max(pred_resp)), col=rgb(1,0,0,0.5))
Figure 21: Notice the function returns a negative AUC value, -12.92738. The absolute value, 12.92738, seems to align with the area between the curve and the x-axis. Note: The x-axis in this plot is in the original (un-logged) units.
As demonstrated, when integrating over a curve in the negative
direction, the function will return a negative AUC value. However, some
users may want to consider all “areas” (i.e. AUC estimates) as positive
values. For this reason, the return.abs = TRUE
argument in
get_AUC
converts negative AUC values to positive values
when returned. However, this argument is FALSE
by
default.
- Bi-phasic Responses
Finally, let us consider a bi-phasic curve fit case – (i.e. response increases then decreases, or vice versa, and typically crosses the x-axis somewhere in the experimental concentration range).
Currently, only the polynomial 2 model in tcplfit2
is
capable of fitting a bi-phasic response. Because curve fits (as
implemented in the tcplfit2
package) are bounded such that
the baseline response is always assumed to be 0, there is typically some
response above the x-axis and some below. This section demonstrates the
AUC estimation for a simulated bi-phasic curve, with area under the
curve both below and above the x-axis, for such events.
The polynomial 2 model in tcplfit2
is implemented as
\(a*(\frac{x}{b} + \frac{x^2}{b^2})\).
Here, we simulate a bi-phasic curve, where \(a
= 2.41\) and \(b = (-1.86)\),
which can also be represented in the typical form as \(\frac{1}{4} x^2 - \frac{1}{2}x\).
The hidden code chunk below shows the data simulation and plotting the simulated curve.
# simulate a poly2 curve
conc_sim <- seq(0,3, length.out = 100)
## biphasic poly2 parameters
b1 <- -1.3
b2 <- 0.7
## converted to tcplfit2's poly2 parameters
a <- b1^2/b2
b <- b1/b2
c(a,b)
#> [1] 2.414286 -1.857143
## plot the curve
resp_sim <- poly2(c(a, b, 0.1), conc_sim)
plot(conc_sim, resp_sim, type = "l",
xlab = "Concentration",ylab = "Response",main = "Biphasic Response")
abline(h = 0)
Figure 22: This plot illustrates the simulated bi-phasic polynomial 2 curve. The curve initially decreases, then increases and crosses the x-axis.
Because the simulated parameters are known for this example, we can
utilize this information directly in the get_AUC
function.
However, one could also add noise to the simulated curve and go
through the typical curve fitting process outlined in earlier sections –
we will leave it as an exercise to the users if they desire.
# get AUC for the simulated Polynomial 2 curve
get_AUC("poly2", min(conc_sim), max(conc_sim), ps = c(a, b))
#> [1] 0.45
Currently, when integrating over a bi-phasic curve fit the
get_AUC
function returns the difference between the total
area above the x-axis and the total area below the x-axis (i.e. the blue
region minus the red region in Figure 23). In this example, the area
above the x-axis is slightly larger than the area below the x-axis
resulting in a positive AUC value.
## plot the curve for the AUC
plot(conc_sim, resp_sim, type = "l",
xlab = "Concentration",ylab = "Response",main = "Biphasic Response AUC")
abline(h = 0)
polygon(c(conc_sim[which(resp_sim <= 0)], max(conc_sim[which(resp_sim <= 0)])), c(resp_sim[which(resp_sim <= 0)], max(resp_sim[which(resp_sim <= 0)])), col="skyblue")
polygon(c(conc_sim[c(max(which(resp_sim <= 0)),which(resp_sim > 0))], max(conc_sim[which(resp_sim > 0)])), c(0,resp_sim[which(resp_sim > 0)], 0), col="indianred")
Figure 23: This plot illustrates the simulated bi-phasic polynomial 2 curve, with the regions included in the AUC estimation.
Model Details
This section contains details for the various models available in
tcplfit2
, with parameter explanations and illustrative
plots. Users should note that the implementation of all models in
tcplfit2
assume the baseline response is always zero (\(y = 0\)).
The hidden code chunk below sets up two concentration ranges used in the following visualizations demonstrating the effect of changing various parameters in the models on the shape of the concentration-response curve.
# prepare concentration data for demonstration
ex_conc <- seq(0, 100, length.out = 500)
ex2_conc <- seq(0, 3, length.out = 100)
Polynomial 1 (poly1)
The polynomial 1 (poly1) model is a simple linear model with the intercept assumed to be at zero.
Model: \(y = ax\)
Parameters include:
a
: slope of the line (i.e. rate of change for the response across the concentration/dose range). If bi-directional fitting is allowed, then \(-\infty < a <\infty\). Otherwise, \(a \ge 0\) (i.e. non-negative).
poly1_plot <- ggplot(mapping=aes(ex_conc)) +
geom_line(aes(y = 55*ex_conc, color = "a=55")) +
geom_line(aes(y = 10*ex_conc, color = "a=10")) +
geom_line(aes(y = 0.05*ex_conc, color = "a=0.05")) +
geom_line(aes(y = -5*ex_conc, color = "a=(-5)")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='a values',
breaks=c('a=(-5)', 'a=0.05', 'a=10', 'a=55'),
values=c('a=(-5)'='black', 'a=0.05' = 'red', 'a=10'='blue', 'a=55'='darkviolet'))
poly1_plot
Figure 24: This plot illustrates how changing
the parameter a
(slope) affects the shape of the resulting
curves.
Polynomial 2 (poly2)
The polynomial 2 (poly2) model is a quadratic model with the baseline
response assumed to be zero. The quadratic model implemented in
tcplfit2
is parameterized such that the a
and
b
parameters are interpreted in terms of their impact on
the the x- and y-scales, respectively. The poly2
model is
defined by the following equation:
Model: \(f(x) = a(\frac{x}{b} + \frac{x^2}{b^2})\).
Note, this parameterization differs from the typical representation of a quadratic function.
- Typical quadratic function: \(f(x) = (b_1)x^2+(b_2)x+c\).
Parameters include:
a
: The y-scalar. Ifa
increases, the curve is stretched vertically. If bi-directional fitting is allowed, then \(-\infty < a <\infty\). Otherwise, \(a \ge 0\) (i.e. non-negative).b
: The x-scalar. Ifb
increase, the curve is shrunk horizontally. Optimization of the poly2 model intcplfit2
restrictsb
such that \(b > 0\).
fits_poly <- data.frame(
# change a
y1 = poly2(ps = c(a = 40, b = 2),x = ex_conc),
y2 = poly2(ps = c(a = 6, b = 2),x = ex_conc),
y3 = poly2(ps = c(a = 0.1, b = 2),x = ex_conc),
y4 = poly2(ps = c(a = -2, b = 2),x = ex_conc),
y5 = poly2(ps = c(a = -20, b = 2),x = ex_conc),
# change b
y6 = poly2(ps = c(a = 4,b = 1.8),x = ex_conc),
y7 = poly2(ps = c(a = 4,b = 7),x = ex_conc),
y8 = poly2(ps = c(a = 4,b = 16),x = ex_conc)
)
# shows how changes in parameter 'a' affect the shape of the curve
poly2_plot1 <- ggplot(fits_poly, aes(ex_conc)) +
geom_line(aes(y = y1, color = "a=40")) +
geom_line(aes(y = y2, color = "a=6")) +
geom_line(aes(y = y3, color = "a=0.1")) +
geom_line(aes(y = y4, color = "a=(-2)")) +
geom_line(aes(y = y5, color = "a=(-20)")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='a values',
breaks=c('a=(-20)', 'a=(-2)', 'a=0.1', 'a=6', 'a=40'),
values=c('a=(-20)'='black', 'a=(-2)'='red', 'a=0.1'='blue', 'a=6'='darkviolet', 'a=40'='darkgoldenrod1'))
# shows how changes in parameter 'b' affect the shape of the curve
poly2_plot2 <- ggplot(fits_poly, aes(ex_conc)) +
geom_line(aes(y = y6, color = "b=1.8")) +
geom_line(aes(y = y7, color = "b=7")) +
geom_line(aes(y = y8, color = "b=16")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='b values',
breaks=c('b=1.8', 'b=7', 'b=16'),
values=c('b=1.8'='black', 'b=7'='red', 'b=16'='blue'))
grid.arrange(poly2_plot1, poly2_plot2, ncol = 2)
Figure 25: The left plot illustrates how
changing a
(y-scalar) affects the shape of the resulting
polynomial 2 curves while holding b
constant (\(b = 2\)). The right plot illustrates how
changing b
(x-scalar) affects the shape of the resulting
polynomial 2 curves while holding a
constant (\(a = 4\)).
It should be noted, the quadratic model may be optimized either
allowing for the possibility of bi-phasic responses in the
concentration/dose range (poly2.biphasic=TRUE
argument in
tcplfit2_core
, default) or assuming the response is
monotonic (poly2.biphasic=FALSE
). When bi-phasic modeling
is enabled, the polynomial 2 model is optimized using the typical
quadratic function then parameters are converted to the x- and y-scalar
parameterization.
Power (pow)
Model: \(f(x) = a*x^b\)
Parameters include:
a
: Scaling factor. Ifa
increases, the curve is stretched vertically. If bi-directional fitting is allowed, then \(-\infty < a <\infty\). Otherwise, \(a \gt 0\).p
: Power, or the rate of growth. A measure of how steep the curve is. The largerp
is, the steeper the curve is. Optimization of the power model restrictsp
such that \(0.3 \le p \le 20\).
fits_pow <- data.frame(
# change a
y1 = pow(ps = c(a = 0.48,p = 1.45),x = ex2_conc),
y2 = pow(ps = c(a = 7.2,p = 1.45),x = ex2_conc),
y3 = pow(ps = c(a = -3.2,p = 1.45),x = ex2_conc),
# change p
y4 = pow(ps = c(a = 1.2,p = 0.3),x = ex2_conc),
y5 = pow(ps = c(a = 1.2,p = 1.6),x = ex2_conc),
y6 = pow(ps = c(a = 1.2,p = 3.2),x = ex2_conc)
)
# shows how changes in parameter 'a' affect the shape of the curve
pow_plot1 <- ggplot(fits_pow, aes(ex2_conc)) +
geom_line(aes(y = y1, color = "a=0.48")) +
geom_line(aes(y = y2, color = "a=7.2")) +
geom_line(aes(y = y3, color = "a=(-3.2)")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='a values',
breaks=c('a=(-3.2)', 'a=0.48', 'a=7.2'),
values=c('a=(-3.2)'='black', 'a=0.48'='red', 'a=7.2'='blue'))
# shows how changes in parameter 'p' affect the shape of the curve
pow_plot2 <- ggplot(fits_pow, aes(ex2_conc)) +
geom_line(aes(y = y4, color = "p=0.3")) +
geom_line(aes(y = y5, color = "p=1.6")) +
geom_line(aes(y = y6, color = "p=3.2")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='p values',
breaks=c('p=0.3', 'p=1.6', 'p=3.2'),
values=c('p=0.3'='black', 'p=1.6'='red', 'p=3.2'='blue'))
grid.arrange(pow_plot1, pow_plot2, ncol = 2)
Figure 26: The left plot illustrates how
changing a
(scaling factor) affects the shape of the
resulting power curves while holding p
constant (\(p = 1.45\)). The right plot illustrates how
changing p
(power) affects the shape of the resulting power
curves while holding a
constant (\(a = 1.2\)). Note: These plots use a
concentration range from 0 to 3 to better show the impact of
p
on the resulting curves.
Hill
Model: \(f(x) = \frac{tp}{(1 + (ga/x)^p )}\)
Parameters include:
tp
: Top parameter, the maximum theoretical response (highest or lowest - for an increasing or decreasing curve, respectively) achieved at saturation, that is the horizontal asymptote. If bi-directional fitting is allowed, then \(-\infty < tp <\infty\). Otherwise \(0 \le tp < \infty\).ga
: AC50, concentration at 50% of the maximal activity. It provides useful information about the “apparent affinity” of the protein under study (enzyme, transporter, etc.) for the substrate. The model restrictsga
such that \(0 \le ga < \infty\).p
: Power, also called the Hill coefficient. Mathematically, it is a measure of how steep the response curve is. In context, it is a measure of the co-operativity of substrate binding to the enzyme, transporter, etc. Optimization of the Hill model restrictsp
such that \(0.3 \le p \le 8\).
fits_hill <- data.frame(
# change tp
y1 = hillfn(ps = c(tp = -200,ga = 5,p = 1.76), x = ex_conc),
y2 = hillfn(ps = c(tp = 200,ga = 5,p = 1.76), x = ex_conc),
y3 = hillfn(ps = c(tp = 850,ga = 5,p = 1.76), x = ex_conc),
# change ga
y4 = hillfn(ps = c(tp = 120,ga = 4,p = 1.76), x = ex_conc),
y5 = hillfn(ps = c(tp = 120,ga = 12,p = 1.76), x = ex_conc),
y6 = hillfn(ps = c(tp = 120,ga = 20,p = 1.76), x = ex_conc),
# change p
y7 = hillfn(ps = c(tp = 120,ga = 5,p = 0.5), x = ex_conc),
y8 = hillfn(ps = c(tp = 120,ga = 5,p = 2), x = ex_conc),
y9 = hillfn(ps = c(tp = 120,ga = 5,p = 5), x = ex_conc)
)
# shows how changes in parameter 'tp' affect the shape of the curve
hill_plot1 <- ggplot(fits_hill, aes(log10(ex_conc))) +
geom_line(aes(y = y1, color = "tp=(-200)")) +
geom_line(aes(y = y2, color = "tp=200")) +
geom_line(aes(y = y3, color = "tp=850")) +
labs(x = "Concentration in Log-10 Scale", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.7),
legend.key.size = unit(0.5, 'cm')) +
scale_color_manual(name='tp values',
breaks=c('tp=(-200)', 'tp=200', 'tp=850'),
values=c('tp=(-200)'='black', 'tp=200'='red', 'tp=850'='blue'))
# shows how changes in parameter 'ga' affect the shape of the curve
hill_plot2 <- ggplot(fits_hill, aes(log10(ex_conc))) +
geom_line(aes(y = y4, color = "ga=4")) +
geom_line(aes(y = y5, color = "ga=12")) +
geom_line(aes(y = y6, color = "ga=20")) +
labs(x = "Concentration in Log-10 Scale", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.7),
legend.key.size = unit(0.4, 'cm')) +
scale_color_manual(name='ga values',
breaks=c('ga=4', 'ga=12', 'ga=20'),
values=c('ga=4'='black', 'ga=12'='red', 'ga=20'='blue'))
# shows how changes in parameter 'p' affect the shape of the curve
hill_plot3 <- ggplot(fits_hill, aes(log10(ex_conc))) +
geom_line(aes(y = y7, color = "p=0.5")) +
geom_line(aes(y = y8, color = "p=2")) +
geom_line(aes(y = y9, color = "p=5")) +
labs(x = "Concentration in Log-10 Scale", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.7),
legend.key.size = unit(0.4, 'cm')) +
scale_color_manual(name='p values',
breaks=c('p=0.5', 'p=2', 'p=5'),
values=c('p=0.5'='black', 'p=2'='red', 'p=5'='blue'))
grid.arrange(hill_plot1, hill_plot2, hill_plot3, ncol = 2, nrow = 2)
Figure 27: The top left plot illustrates how
changing tp
(maximal theoretical change in response)
affects the shape of the resulting Hill curves while holding all other
parameters constant (\(ga = 5, p =
1.76\)). The top right plot illustrates how changing
ga
(slope) affects the shape of the resulting Hill curves
while holding all other parameters constant (\(tp = 120, p = 1.76\)). The bottom left plot
illustrates how changing p
(power) affects the shape of the
resulting Hill curves while holding all other parameters constant (\(tp = 120, ga = 5\)). Note: The x-axes are
in the \(\mathbf{log_{10}}\) scale to
reflect the scale the model is optimized in, i.e. log Hill model \(f(x) = \frac{tp}{1 +
10^{(p*(ga-x))}}\).
Gain-Loss (gnls)
The gain-loss (gnls) model is the product of two Hill models. One Hill model fits the response going up (gain) and one fits the response going down (loss). A gain-loss curve can occur either as a gain in response first then changing to a loss, or vice-versa.
Model: \(f(x) = \frac{tp}{[(1 + (ga/x)^p )(1 + (x/la)^q )]}\)
Parameters include:
tp
,ga
, andp
are the same as in the Hill model, and thela
andq
parameters are counterparts to thega
andp
parameters, respectively, but in the loss direction of the curve.la
: Loss AC50, concentration at 50% of the maximal activity in the loss direction. The model optimization restrictsla
such that \(0 \le la < \infty\) and \(la-ga\ge 1.5\).q
: Loss power or the rate of loss. The larger it is, the faster the curve decreases (if it increases first). The model restrictsq
such that \(0.3 \le q \le 8\).
fits_gnls <- data.frame(
# change la
y1 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 17,q = 1.34), x = ex_conc),
y2 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 50,q = 1.34), x = ex_conc),
y3 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 100,q = 1.34), x = ex_conc),
# change q
y4 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 20,q = 0.3), x = ex_conc),
y5 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 20,q = 1.2), x = ex_conc),
y6 = gnls(ps = c(tp = 750,ga = 15,p = 1.45,la = 20,q = 8), x = ex_conc)
)
# shows how changes in parameter 'la' affect the shape of the curve
gnls_plot1 <- ggplot(fits_gnls, aes(log10(ex_conc))) +
geom_line(aes(y = y1, color = "la=17")) +
geom_line(aes(y = y2, color = "la=50")) +
geom_line(aes(y = y3, color = "la=100")) +
labs(x = "Concentration in Log-10 Scale", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='la values',
breaks=c('la=17', 'la=50', 'la=100'),
values=c('la=17'='black', 'la=50'='red', 'la=100'='blue'))
# shows how changes in parameter 'q' affect the shape of the curve
gnls_plot2 <- ggplot(fits_gnls, aes(log10(ex_conc))) +
geom_line(aes(y = y4, color = "q=0.3")) +
geom_line(aes(y = y5, color = "q=1.2")) +
geom_line(aes(y = y6, color = "q=8")) +
labs(x = "Concentration in Log-10 Scale", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='q values',
breaks=c('q=0.3', 'q=1.2', 'q=8'),
values=c('q=0.3'='black', 'q=1.2'='red', 'q=8'='blue'))
grid.arrange(gnls_plot1, gnls_plot2, ncol = 2)
Figure 28: The left plot illustrates how
changing la
(loss slope) affects the shape of the resulting
gain-loss curves while holding all other parameters constant (\(tp = 750,ga = 15,p = 1.45,q = 1.34\)). The
right plot illustrates how changing q
(loss power) affects
the shape of the resulting gain-loss curves while holding all other
parameters constant (\(tp = 750,ga = 15,p =
1.45,la = 20\)). Note: The x-axes are in the \(\mathbf{log_{10}}\) scale to reflect the
scale the model is optimized in, i.e. the log gain-loss model \(f(x) = \frac{tp}{[(1 + 10^{(p*(ga-x))} )(1 +
10^{(q*(x-la))})] }\).
Exponential 2 (Exp2)
Model: \(f(x) = a*(e^{\frac{x}{b}}-1)\)
Parameters include:
a
: The y-scalar. Ifa
increases, the curve is stretched vertically. If bi-directional fitting is allowed, then \(-\infty < a < \infty\). Otherwise, \(0 < a <\infty\).b
: The x-scalar. Ifb
increases, the curve is shrunk horizontally. The model restrictsb
such that \(b > 0\) (i.e. positive).
fits_exp2 <- data.frame(
# change a
y1 = exp2(ps = c(a = 20,b = 12), x = ex2_conc),
y2 = exp2(ps = c(a = 9,b = 12), x = ex2_conc),
y3 = exp2(ps = c(a = 0.1,b = 12), x = ex2_conc),
y4 = exp2(ps = c(a = -3,b = 12), x = ex2_conc),
# change b
y5 = exp2(ps = c(a = 0.45,b = 4), x = ex2_conc),
y6 = exp2(ps = c(a = 0.45,b = 9), x = ex2_conc),
y7 = exp2(ps = c(a = 0.45,b = 20), x = ex2_conc)
)
# shows how changes in parameter 'a' affect the shape of the curve
exp2_plot1 <- ggplot(fits_exp2, aes(ex2_conc)) +
geom_line(aes(y = y1, color = "a=20")) +
geom_line(aes(y = y2, color = "a=9")) +
geom_line(aes(y = y3, color = "a=0.1")) +
geom_line(aes(y = y4, color = "a=(-3)")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='a values',
breaks=c('a=(-3)', 'a=0.1', 'a=9', 'a=20'),
values=c('a=(-3)'='black', 'a=0.1'='red', 'a=9'='blue', 'a=20'='darkviolet'))
# shows how changes in parameter 'b' affect the shape of the curve
exp2_plot2 <- ggplot(fits_exp2, aes(ex2_conc)) +
geom_line(aes(y = y5, color = "b=4")) +
geom_line(aes(y = y6, color = "b=9")) +
geom_line(aes(y = y7, color = "b=20")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='b values',
breaks=c('b=4', 'b=9', 'b=20'),
values=c('b=4'='black', 'b=9'='red', 'b=20'='blue'))
grid.arrange(exp2_plot1, exp2_plot2, ncol = 2)
Figure 29: The left plot illustrates how
changing a
(y-scalar) affects the shape of the resulting
exponential 2 curves while holding b
constant (\(b=12\)). The right plot illustrates how
changing b
(x-scalar) affects the shape of the resulting
exponential 2 curves while holding a
constant (\(a=0.45\)). Note: These plots use a smaller
concentration range from 0 to 3 to better show the impact of
b
on the resulting curves.
Exponential 3 (Exp3)
Model: \(f(x) = a*(e^{(x/b)^p} - 1)\)
Parameters include:
a
andb
are similar to those in Exponential 2. For details and plots, refer back to Exponential 2.p
: Power. A measure of how steep the curve is. The furtherp
is from 1, the steeper the curve is. The model restrictsp
such that \(0.3 \le p \le 8\).
fits_exp3 <- data.frame(
# change p
y1 = exp3(ps = c(a = 1.67,b = 12.5,p = 0.3), x = ex2_conc),
y2 = exp3(ps = c(a = 1.67,b = 12.5,p = 0.9), x = ex2_conc),
y3 = exp3(ps = c(a = 1.67,b = 12.5,p = 1.2), x = ex2_conc)
)
# shows how changes in parameter 'p' affect the shape of the curve
exp3_plot <- ggplot(fits_exp3, aes(ex2_conc)) +
geom_line(aes(y = y1, color = "p=0.3")) +
geom_line(aes(y = y2, color = "p=0.9")) +
geom_line(aes(y = y3, color = "p=1.2")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.15,0.8)) +
scale_color_manual(name='p values',
breaks=c('p=0.3', 'p=0.9', 'p=1.2'),
values=c('p=0.3'='black', 'p=0.9'='red', 'p=1.2'='blue'))
exp3_plot
Figure 30: This plot illustrates how changing
p
(power) affects the shape of the resulting exponential 3
curves while holding all other parameters constant (\(a = 1.67,b = 12.5\)). Note: This plot uses
a smaller concentration range from 0 to 3 to better show the impact of
p
on the resulting curves.
Exponential 4 (Exp4)
Model: \(f(x) = tp*(1-2^{(-\frac{x}{ga})})\)
Parameters include:
tp
: Top parameter. The maximum theoretical response (i.e., horizontal asymptote that the predicted curve is approaching), which may also be negative for decreasing curves. If bi-directional fitting is allowed, then \(-\infty <tp < \infty\). Otherwise, \(0 \le tp < \infty\).ga
: AC50, concentration at 50% of the maximal activity. It acts as the slope, controlling the rate at which the response (curve) approaches the top. Ifga
increases, the curve is shrunk horizontally. The model restrictsga
such that \(0 \le ga < \infty\) (i.e. non-negative).
fits_exp4 <- data.frame(
# change tp
y1 = exp4(ps = c(tp = 895,ga = 15),x = ex_conc),
y2 = exp4(ps = c(tp = 200,ga = 15),x = ex_conc),
y3 = exp4(ps = c(tp = -500,ga = 15),x = ex_conc),
# change ga
y4 = exp4(ps = c(tp = 500,ga = 0.4),x = ex_conc),
y5 = exp4(ps = c(tp = 500,ga = 10),x = ex_conc),
y6 = exp4(ps = c(tp = 500,ga = 20),x = ex_conc)
)
# shows how changes in parameter 'tp' affect the shape of the curve
exp4_plot1 <- ggplot(fits_exp4, aes(ex_conc)) +
geom_line(aes(y = y1, color = "tp=895")) +
geom_line(aes(y = y2, color = "tp=200")) +
geom_line(aes(y = y3, color = "tp=(-500)")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.8,0.2)) +
scale_color_manual(name='tp values',
breaks=c('tp=(-500)', 'tp=200', 'tp=895'),
values=c('tp=(-500)'='black', 'tp=200'='red', 'tp=895'='blue'))
# shows how changes in parameter 'ga' affect the shape of the curve
exp4_plot2 <- ggplot(fits_exp4, aes(ex_conc)) +
geom_line(aes(y = y4, color = "ga=0.4")) +
geom_line(aes(y = y5, color = "ga=10")) +
geom_line(aes(y = y6, color = "ga=20")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.8,0.2)) +
scale_color_manual(name='ga values',
breaks=c('ga=0.4', 'ga=10', 'ga=20'),
values=c('ga=0.4'='black', 'ga=10'='red', 'ga=20'='blue'))
grid.arrange(exp4_plot1, exp4_plot2, ncol = 2)
Figure 31: The left plot illustrates how
changing tp
(maximal change in response) affects the shape
of the resulting exponential 4 curves while holding ga
constant (\(ga = 15\)). The right plot
illustrates how changing ga
(slope) affects the shape of
the resulting exponential 4 curves while holding tp
constant (\(tp = 500\)).
Exponential 5 (Exp5)
Model: \(f(x) = tp*(1-2^{(-(x/ga)^p)})\)
Parameters include:
tp
andga
are similar to those in Exponential 4. For details and plots, refer back to Exponential 4.p
: Power. A measure of how steep the curve is. The furtherp
is from 1, the steeper the curve is. The model restrictsp
such that \(0.3 \le p \le 8\).
fits_exp5 <- data.frame(
# change p
y1 = exp5(ps = c(tp = 793,ga = 6.25,p = 0.3), x = ex_conc),
y2 = exp5(ps = c(tp = 793,ga = 6.25,p = 3.4), x = ex_conc),
y3 = exp5(ps = c(tp = 793,ga = 6.25,p = 8), x = ex_conc)
)
# shows how changes in parameter 'p' affect the shape of the curve
exp5_plot <- ggplot(fits_exp5, aes(ex_conc)) +
geom_line(aes(y = y1, color = "p=0.3")) +
geom_line(aes(y = y2, color = "p=3.4")) +
geom_line(aes(y = y3, color = "p=8")) +
labs(x = "Concentration", y = "Response") +
theme_bw()+
theme(legend.position = c(0.8,0.2)) +
scale_color_manual(name='p values',
breaks=c('p=0.3', 'p=3.4', 'p=8'),
values=c('p=0.3'='black', 'p=3.4'='red', 'p=8'='blue'))
exp5_plot
Figure 32: This plot illustrates how changing
p
(power) affects the shape of the resulting exponential 5
curves while holding all other parameters constant (\(tp = 793, ga = 6.25\)).
Table of All Model Details
This table provides a summary of model details for all available
tcplfit2
models. This table is taken from the
Concentration-Response Modeling Details sub-section in the tcpl
Vignette on CRAN.
tcplfit2 model details. | ||||
Model | Abbreviation | Equations | OutputParameters | Details |
---|---|---|---|---|
Constant | cnst | \(f(x) = 0\) | Parameters always equals ‘er’. | |
Linear | poly1 | \(f(x) = ax\) | a (y-scale) | |
Quadratic | poly2 | \(f(x) = a(\frac{x}{b}+(\frac{x}{b})^{2})\) | a (y-scale) b (x-scale) | |
Power | pow | \(f(x) = ax^p\) | a (y-scale) p (power) | |
Hill | hill | \(f(x) = \frac{tp}{1 + (\frac{ga}{x})^{p}}\) | tp (top parameter) ga (gain AC50) p (gain-power) | Concentrations are converted internally to log10 units and optimized with f(x) = tp/(1 + 10^(p*(gax))), then ga and ga_sd are converted back to regular units before returning. |
Gain-Loss | gnls | \(f(x) = \frac{tp}{(1 + (\frac{ga}{x})^{p} )(1 + (\frac{x}{la})^{q} )}\) | tp (top parameter) ga (gain AC50) p (gain power) la (loss AC50) q (loss power) | Concentrations are converted internally to log10 units and optimized with f(x) = tp/[(1 + 10^(p(gax)))(1 + 10^(q(x-la)))], then ga, la, ga_sd, and la_sd are converted back to regular units before returning. |
Exponential 2 | exp2 | \(f(x) = a*(exp(\frac{x}{b}) - 1)\) | a (y-scale) b (x-scale) | |
Exponential 3 | exp3 | \(f(x) = a*(exp((\frac{x}{b})^{p}) - 1)\) | a (y-scale) b (x-scale) p (power) | |
Exponential 4 | exp4 | \(f(x) = tp*(1-2^{\frac{-x}{ga}})\) | tp (top parameter) ga (AC50) | |
Exponential 5 | exp5 | \(f(x) = tp*(1-2^{-(\frac{x}{ga})^{p}})\) | tp (top parameter) ga (AC50) p (power) | |
Model descriptions are pulled from tcplFit2 manual at https://cran.R-project.org/package=tcplfit2. |
Glossary
The following glossary, though it may not be encompassing all terms
included in this package, is provided to serve as a quick reference when
using tcplfit2
:
- a
- Model fitting parameter in the following models: exp2, exp3, poly1, poly2, pow
- ac5
- Active concentration at 5% of the maximal predicted change in response (top) value
- ac10
- Active concentration at 10% of the maximal predicted change in response (top) value
- ac20
- Active concentration at 20% of the maximal predicted change in response (top) value
- ac50
- Active concentration at 50% of the maximal predicted change in response (top) value
- acc
- Active concentration at the cutoff
- ac1sd
- Active concentration at 1 standard deviation of the baseline response
- b
- Model fitting parameter in the following models: exp2, exp3, ploy2
- bmad
- Baseline median absolute deviation. Measure of baseline variability.
- bmed
- Baseline median response. If set to zero then the data are already zero-centered. Otherwise, this value is used to zero-center the data by shifting the entire response series by the specified amount.
- bmd
- Benchmark dose, activity concentration observed at the benchmark response (BMR) level
- bmdl
- Benchmark dose lower confidence limit. Derived using a 90% confidence interval around the BMD to reflect the uncertainty
- bmdu
- Benchmark dose upper confidence limit. Derived using a 90% confidence interval around the BMD to reflect the uncertainty
- bmr
-
Benchmark response. Response level at which the BMD is calculated as
\(BMR =
{\text{onesd}}\times{\text{bmr_scale}}\), where the default
bmr_scale
is 1.349 - caikwt
- Akaike weight of the constant model relative to the winning model, calculated as \(\frac{exp(0.5*AIC_{constant})}{exp(0.5*AIC_{constant})+exp(0.5*AIC_{winning})}\). Used in calculating the continuous hitcall.
- conc
- Tested concentrations, typically micromolar (\(\mu M\))
- cutoff
- Efficacy threshold. User-specified to define activity and may reflect statistical, assay-specific, and biological considerations
- er
- Model fitting error parameter, measure of the uncertainty in parameters used to define the model and plotting error bars
- fit_method
- Curve fit method
- ga
- AC50 for the rising curve in a Hill model or the gnls model
- hitc or hitcall
- Continuous hitcall value ranging from 0 to 1
- mll
- Maximum log-likelihood of winning model. Used in calculating the continuous hitcall \(length(modpars) - aic(fit_{method})/2\)
- la
- AC50 for the falling curve in a gain-loss model
- lc50
- Loss concentration at 50% of maximal predicted change in response (top), corresponding to the loss side of the gnls model
- n_gt_cutoff
- Number of data points above the cutoff
- p
- Model fitting parameter in the following models: exp3, exp5, gnls, Hill, pow
- q
- Model fitting parameter in the gnls model
- resp
- Observed responses at respective concentrations (conc)
- rmse
- Root mean square error of the data points relative to model fit. Lower RMSE indicate model fits the data well.
- top_over_cutoff
- Ratio of the maximal predicted change in response from baseline value to the cutoff (top/cutoff)
- top
- Response value at the maximal predicted change in response from baseline (\(y = 0\))
- tp
- Model fitting parameter in the following models: Hill, gnls, exp4, exp5 - the horizontal asymptote that the predicted curve is approaching (theoretical maximum)